请问:bad file descriptor是什么错误?

machele 2008-04-30 11:28:14
这是源代码:[code=Java]import java.io.*;
public class FileTest2{
public static void main(String[] args){
FileOutputStream fos = null ;
try{
fos = new FileOutputStream("F:\\java_ex\\abc.txt");
}catch(FileNotFoundException fnf){
fnf.printStackTrace();
}
for(int i='A';i<'Z';i++){
try{
fos.write(i);
fos.close();
}catch(IOException ioe){
ioe.printStackTrace();
}
}
}
}[/code]
这是错误提示:
F:\java_ex>javac FileTest2.java

F:\java_ex>java FileTest
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)
java.io.IOException: Bad file descriptor
at java.io.FileOutputStream.write(Native Method)
at FileTest.main(FileTest.java:38)

F:\java_ex>
...全文
10206 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2008-04-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 a_nuo 的回复:]
你要把所有的字符都输出到文件里面了再调用close()关闭输出流
你的代码我帮你该了
错在你刚写入一个字符就关闭输出流了
[/Quote]

这个是第一个发现原因的,支持一个!呵呵!
KKK2007 2008-04-30
  • 打赏
  • 举报
回复
调试通过
Java]import java.io.*;
public class FileTest2{
public static void main(String[] args){
FileOutputStream fos = null ;
try{
fos = new FileOutputStream("F:\\java_ex\\abc.txt");
}catch(FileNotFoundException fnf){
fnf.printStackTrace();
}
for(int i='A';i <'Z';i++){
try{
fos.write(i);

}catch(IOException ioe){
ioe.printStackTrace();
}
finally{fos.close();}
}
}
}
Shine_Panda 2008-04-30
  • 打赏
  • 举报
回复
修改后的代码:
测试成功!!!!!!!!!!

import java.io.*;
class FileTest2{

static void main(String[] args){
FileOutputStream fos = null ;
try{
fos = new FileOutputStream("F:\\java_ex\\abc.txt");


for(int i='A';i <'Z';i++){

fos.write(i);


}
fos.close();
}catch(FileNotFoundException fe){
fe.printStackTrace();
}
catch(IOException ioe){
ioe.printStackTrace();
}
}

}


numen_wlm 2008-04-30
  • 打赏
  • 举报
回复

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

class TestFile2 {
public static void main(String[] args) {

FileOutputStream fos = null;
try {
fos = new FileOutputStream("E:\\java_ex\\abc.txt");
for (int i = 'A'; i < 'Z'; i++) {
try {
fos.write(i);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
} catch (FileNotFoundException fnf) {
fnf.printStackTrace();
}finally{
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}
}

云上飞翔 2008-04-30
  • 打赏
  • 举报
回复
答:错误原因是:fos.close()放在for()循环中产生的。
解决方法:将fos.close()移到循环外面。即:在循环外面,加上:
try{
fos.close();
}catch(IOException e1){e1.printStackTrace();}
a_nuo 2008-04-30
  • 打赏
  • 举报
回复
你要把所有的字符都输出到文件里面了再调用close()关闭输出流
你的代码我帮你该了
错在你刚写入一个字符就关闭输出流了
a_nuo 2008-04-30
  • 打赏
  • 举报
回复
import java.io.*;
public class TestFile2{
public static void main(String[] args){
File f=new File("E:\\javaex\\abc.txt");

FileOutputStream fos = null ;
try{
if(f.exists())
f.createNewFile();
fos = new FileOutputStream(f);
}catch(Exception fnf){
fnf.printStackTrace();
}
for(int i='A';i <'Z';i++){
try{
fos.write(i);

}catch(IOException ioe){
ioe.printStackTrace();
}}
try {
fos.close();
}
catch (Exception ex) {
ex.printStackTrace();
}


}
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧