是否有直接FileDescriptor实例化的用例?

时间:2014-12-17 22:17:08

标签: java file-descriptor

我正在使用Java的API,并想知道是否存在使用类的构造函数创建FileDescriptor对象的用例 - 换句话说:

FileDescriptor newFileDescriptor = new FileDescriptor();

API指定构造的对象无效。感谢。

3 个答案:

答案 0 :(得分:2)

documentation

  

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

这似乎很清楚。

唯一的构造函数文档说

  

构造一个(无效的)FileDescriptor对象。

这似乎也是不言自明的。

答案 1 :(得分:0)

不,我没有遇到过有用的用例。

FileDescriptor documentation非常明确,虽然你可以直接构建FileDescriptor你不应该

  

文件描述符类的实例用作不透明句柄   表示打开文件的底层机器特定结构,   打开的套接字,或其他字节源或接收器。主要实用   用于文件描述符是创建FileInputStream或   FileOutputStream包含它。应用程序不应该创建它们   拥有文件描述符。

请注意最后一句:应用程序不应创建自己的文件描述符。

FileDescriptor() documentation进一步解释(如您所见):

  

构造一个(无效的)FileDescriptor对象。

因此,newFileDescriptor.valid()将返回false

说完这个如果你直接构建一个FileDescriptor,它肯定是一般意义上的有效 Java对象 。例如,以下代码......

FileDescriptor newFileDescriptor = new FileDescriptor();
System.out.println(newFileDescriptor.getClass());

...输出...

  

class java.io.FileDescriptor

......正如人们所期望的那样;但这当然不是特别有用 - 对于一个希望用作文件描述符的对象。

除此之外,最好遵循文档的建议。

答案 2 :(得分:-1)

所以你想要获得一些文件吗?看看:http://examples.javacodegeeks.com/core-java/io/filedescriptor/java-file-descriptor-example/ 基本上,Java类FileDescriptor提供了底层机器特定结构的句柄,表示打开文件,打开套接字或其他字节源或接收器。

应用程序不应创建FileDescriptor对象,它们主要用于创建FileInputStream或FileOutputStream对象以包含它。

因此,每当我们创建一个FileInputStream或FileOutputStream对象时,我们都会得到一个与之关联的FileDescriptor对象,我们也可以使用这个FileDescriptor对象来创建另一个FileInputStream或FileOutputStream对象。

现在,让我们看看带有FileDescriptor的FileInputStream示例。

FileInputStream fileInputStream = new FileInputStream(new File(

                "/path/to/file.txt"));

        FileDescriptor fd = fileInputStream.getFD();

        System.out.println(" File descriptor of the file/path/to/file.txt : "
                        + fd.hashCode());

        fileInputStream.close();

        FileOutputStream fileOutputStream = new FileOutputStream(new File(

                "/path/to/file.txt"));

        FileDescriptor fd2 = fileOutputStream.getFD();



        fileOutputStream.close();

    }