我写了一段小代码不知道,实际开发过程中,是不是这么用的。
import java.io.*;public class testFileDescriptor { public static void main(String[] args)throws IOException{
FileInputStream in = new FileInputStream("D:\\333\\111.txt");
FileDescriptor fd = in.getFD();
System.out.println(fd.valid());  //读数据采用 valid() 来验证是否有效。

FileOutputStream out = new FileOutputStream("D:\\333\\111.txt");
BufferedOutputStream bf = new BufferedOutputStream(out);
bf.write(98);
bf.write(99);
bf.flush();
fd = out.getFD();
fd.sync();   //写数据采用sync()方法将内存中的数据同步到目标文件中。
}
}还有就是FileDescriptor类的字段,err、 in、 out 这3个字段又是用来做什么的呢?

解决方案 »

  1.   

    第一次注意这个类,可以查查API
      

  2.   

    FileDescriptor.err 标准错误流的句柄。 
    FileDescriptor.in 标准输入流的句柄。 
    FileDescriptor.out 标准输出流的句柄。 
    还没有过这方面的经验哦所以不知道 实际开发是不是这样的哦
      

  3.   

    注意,FileDescriptor 只对 FD 下游的 buffer 起作用,对 BufferedOutputStream 里的buffer不起丝毫作用。因为在你的代码里已经有了br.flush了。因此你的代码是起作用的。如果只是针对文件进行读写操作而对“下游”的同步不是很关心的话,无须使用FD。