请问:bad file descriptor是什么错误?
这是源代码:[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>
[解决办法]
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();}}}
[解决办法]
你要把所有的字符都输出到文件里面了再调用close()关闭输出流
你的代码我帮你该了
错在你刚写入一个字符就关闭输出流了
[解决办法]
答:错误原因是:fos.close()放在for()循环中产生的。
解决方法:将fos.close()移到循环外面。即:在循环外面,加上:
try{
fos.close();
}catch(IOException e1){e1.printStackTrace();}
[解决办法]
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();
}
}
}
}