首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有直接FileDescriptor实例化的用例?

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

Stack Overflow用户
提问于 2014-12-17 22:17:08
回答 3查看 520关注 0票数 0

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

代码语言:javascript
复制
FileDescriptor newFileDescriptor = new FileDescriptor();

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-17 22:29:34

不,我还没有遇到这样有意义的用例。

文档非常清楚,虽然可以直接构造FileDescriptor,但不应该

文件描述符类的实例充当底层机器特定结构的不透明句柄,表示打开的文件、打开的套接字或另一个字节源或接收器。文件描述符的主要实际用途是创建一个FileInputStream或FileOutputStream来包含它。应用程序不应该创建自己的文件描述符。

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

文档进一步解释了(正如您所发现的):

构造(无效) FileDescriptor对象。

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

话虽如此,,如果直接构造了一个FileDescriptor,它肯定是一个普通意义上的有效FileDescriptor对象。例如,以下代码..。

代码语言:javascript
复制
FileDescriptor newFileDescriptor = new FileDescriptor();
System.out.println(newFileDescriptor.getClass());

...outputs...

类java.io.FileDescriptor

正如人们所期望的那样,...just并不特别有用--对于希望用作文件描述符的对象来说。

说到底,抛开头发不谈,最好遵循文档的建议。

票数 0
EN

Stack Overflow用户

发布于 2014-12-17 22:23:21

文档

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

这似乎很清楚。

唯一的构造函数文档说

构造(无效) FileDescriptor对象。

这似乎也是不言自明的。

票数 2
EN

Stack Overflow用户

发布于 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的示例。

代码语言:javascript
复制
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();

    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27535887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档