我正在使用Java的API,并想知道是否存在使用类的构造函数创建FileDescriptor
对象的用例 - 换句话说:
FileDescriptor newFileDescriptor = new FileDescriptor();
API指定构造的对象无效。感谢。
答案 0 :(得分:2)
答案 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();
}