我正在研究Java的API,并想知道是否存在使用类的构造函数创建FileDescriptor对象的用例--换句话说:
FileDescriptor newFileDescriptor = new FileDescriptor();API指定构造的对象无效。谢谢。
发布于 2014-12-17 22:29:34
不,我还没有遇到这样有意义的用例。
文档非常清楚,虽然可以直接构造FileDescriptor,但不应该
文件描述符类的实例充当底层机器特定结构的不透明句柄,表示打开的文件、打开的套接字或另一个字节源或接收器。文件描述符的主要实际用途是创建一个FileInputStream或FileOutputStream来包含它。应用程序不应该创建自己的文件描述符。
注意最后一句:应用程序不应该创建自己的文件描述符。
文档进一步解释了(正如您所发现的):
构造(无效) FileDescriptor对象。
因此,newFileDescriptor.valid()将返回false。
话虽如此,,如果直接构造了一个FileDescriptor,它肯定是一个普通意义上的有效FileDescriptor对象。例如,以下代码..。
FileDescriptor newFileDescriptor = new FileDescriptor();
System.out.println(newFileDescriptor.getClass());...outputs...
类java.io.FileDescriptor
正如人们所期望的那样,...just并不特别有用--对于希望用作文件描述符的对象来说。
说到底,抛开头发不谈,最好遵循文档的建议。
发布于 2014-12-17 22:23:21
文档说
应用程序不应该创建自己的文件描述符。
这似乎很清楚。
唯一的构造函数文档说
构造(无效) FileDescriptor对象。
这似乎也是不言自明的。
发布于 2014-12-17 22:23:29
所以你想要访问一些文件,对吗?请看一看:基本上,http://examples.javacodegeeks.com/core-java/io/filedescriptor/java-file-descriptor-example/类FileDescriptor提供了底层机器特定结构的句柄,表示打开的文件、打开的套接字或其他源代码或字节接收器。
应用程序不应该创建FileDescriptor对象,它们主要用于创建FileInputStream或FileOutputStream对象来包含它。
因此,每当我们创建一个FileInputStream或FileOutputStream对象时,我们就会得到一个与它关联的FileDescriptor对象,我们也可以使用这个FileDescriptor对象来创建另一个FileInputStream或FileOutputStream对象。
现在,让我们看看FileInputStream和FileDescriptor的示例。
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();
}https://stackoverflow.com/questions/27535887
复制相似问题