黑马程序员技术交流社区

标题: public FileWriter(FileDescriptor fd) [打印本页]

作者: 张青峰    时间: 2012-2-3 17:39
标题: public FileWriter(FileDescriptor fd)
public FileWriter(FileDescriptor fd)

构造与某个文件描述符相关联的 FileWriter 对象。

参数:
fd - 要写入数据的 FileDescriptor 对象。
  
这个具体怎样使用的?高手们给点解释 谢谢!
作者: 黄秋    时间: 2012-2-3 17:50
这个看视频就行啦,回答也不够全面:
Java基础第18天-07-IO流(FileWriter).avi
作者: 张伟~    时间: 2012-2-3 18:42
本帖最后由 张伟~ 于 2012-2-3 18:43 编辑

public final class FileDescriptor extends Object
文件描述符类的实例用作与基础机器有关的某种结构的不透明句柄,该结构表示开放文件、开放套接字或者字节的另一个源或接收者。文件描述符的主要实际用途是创建一个包含该结构的 FileInputStream 或 FileOutputStream。

应用程序不应创建自己的文件描述符。

说实话API还真看得不怎么懂,于是瞎捣鼓了下。。
import java.io.*;

class Test11 {
        public static void main(String[] args) throws IOException {
                // TODO Auto-generated method stub

                FileInputStream fis=new FileInputStream("d:\\2.txt") ;
                //getFD() 返回表示到文件系统中实际文件的连接的 FileDescriptor 对象,该文件系统正被此 FileInputStream 使用。
                FileDescriptor fd=fis.getFD();
                // boolean valid()  测试此文件描述符对象是否有效  这里放回true
                System.out.println(fd.valid());
        }
希望有所帮助,时间紧急,就先这么弄着。。 建议楼主百度看下


}
作者: 梅雄新    时间: 2012-2-3 19:48
本帖最后由 梅雄新 于 2012-2-3 19:51 编辑

结合二楼查找的中文API所述
FileDescriptor 类 主要实际用途是创建一个包含该结构的 FileInputStream 或 FileOutputStream
FileInputStream 、FileOutputStream的实例对象都可以通过getFD() 获得一个FileDescriptor 对象表示到文件系统中实际文件的连接的 FileDescriptor 对象

FileDescriptor 在public FileWriter(FileDescriptor fd)中的参数fd是一个文件系统中实际文件的连接的 FileDescriptor 对象,
FileDescriptor类提供的方法中未找到可以获取FileDescriptor本身是从哪个字节流得到的,只存在像二楼那样的测试方法。
从楼主提供的方法public FileWriter(FileDescriptor fd)可以看出楼主是想构造一个把字节流转化成字符流的方法,FileDescriptor类是无法实践的。
作者: 衣服    时间: 2012-2-6 17:43
指定文件名字创建流是一种常见和主要的方式。但是,在某些情况下,用户不知道具体文件路径,只知道系统提供的一个“文件描述”。FD 的概念应该是从POSIX 来的。

因此,用FD创建文件读写流只是提供了针对这种特殊情况的一个选择。不要期望着在你用文件名字创建的流里面 get 出 FileDescriptor 乐,(如果调用了,肯定返回空)毫无意义。而特殊情况其实非常少,javadoc 说得很明确:用户不能自己创建这个类的对象,只能使用定义好的FileDescriptor.err, in 或 out。

但即使这三个定义好的FD, 用户也可以不必使用,因为,System.err, in 和 out 可以替代他们。

因此,不必对 java.io.FileDescriptor 过多纠缠。
作者: 衣服    时间: 2012-2-6 19:07
public static void main(String[] args) throws IOException {
                // TODO Auto-generated method stub
                 byte a[]=new byte[1];
                /* FileDescriptor.in输出流测试  
                  FileInputStream fis=new FileInputStream("d:/123.txt") ;
                  fis.read(a,0,a.length);
         FileOutputStream  fdf=new FileOutputStream(FileDescriptor.out);//这里本身需要一个file 但是我们不知道
                     fdf.write( a, 0, a.length);//输出在控制台中
                     */
                  
           /* FileDescriptor.in输入流测试
            *    FileInputStream fis=new FileInputStream(FileDescriptor.in) ;
                fis.read( a, 0, a.length);
                FileOutputStream  fdf=new FileOutputStream("d:/123.txt");
                fdf.write(a,0,a.length);*/
      
                 
               
        }

这样乱鼓捣了会不直到对不。刚刚发的那个是网上的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2