FileDescriptor 在java中的java.io包下面  

 public final class FileDescriptor {
。。。
}

官方的解释:

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

  一坨~~~看不明白~

  在wiki中的描述

  是一个用于表述指向文件的引用的抽象化概念。在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于UNIXLinux这样的操作系统。

  基于上面filedescriptor在java中,是当应用程序打开一个文件或者建立一个socket连接的时候,内核返回给应用程序一个非负的整数(In,out,err,分别为0,1,2),使用这个称之为filedescriptor的东西来实现对文件或者socket的操作。

  【一网友的解释】【赞】打开文件或者socket之后给你一个fd,然后你可以拿着fd去操作文件或者socket,也可以把这个fd做为参数传来传去。你不能把文件或者socket“本身”作为一个参数传给一个函数吧,传fd就可以,因为它就是一个类似指针的东西。函数里面就根据这个fd对这同一个文件或者已经建立的socket连接进行操作。
之所以socket和文件都有fd的原因是都可以在上面做打开,关闭,读,写等等操作。

  在获取了filedescriptor之后,可以对文件或socket的操作:

 in, out, err介绍

  1. (01) in  -- 标准输入(键盘)的描述符
  2. (02) out -- 标准输出(屏幕)的描述符
  3. (03) err -- 标准错误输出(屏幕)的描述符

它们3个的原理和用法都类似,下面我们通过out来进行深入研究。

out 的作用和原理

out是标准输出(屏幕)的描述符。但是它有什么作用呢?
我们可以通俗理解,out就代表了标准输出(屏幕)。若我们要输出信息到屏幕上,即可通过out来进行操作;但是,out又没有提供输出信息到屏幕的接口(因为out本质是FileDescriptor对象,而FileDescriptor没有输出接口)。怎么办呢?

  很简单,我们创建out对应的“输出流对象”,然后通过“输出流”的write()等输出接口就可以将信息输出到屏幕上。如下代码:

 try {
FileOutputStream out = new FileOutputStream(FileDescriptor.out);
out.write("hello".getBytes());
out.close();
} catch (IOException e) {
}

执行上面的程序之后会在屏幕上打印出hello。但是为了方便我们操作,java早已经帮我们完成了操作的封装,通过System.out.println("hello")。

【参考】http://www.fengfly.com/plus/view-214059-1.html

    https://ruby-china.org/topics/161

    https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6

FileDescriptor的更多相关文章

  1. Java-IO之FileDescriptor

    FileDescriptor是文件描述符,可以被用来表示开放文件,开放套接字等,FileDescriptor可以被看成某个文件,但无法对该文件进行操作,需要新创建FileDescriptor对应的Fi ...

  2. [一]FileDescriptor文件描述符 标准输入输出错误 文件描述符

    文件描述符   当应用程序请求打开或者操作文件时,操作系统为应用程序设置一张文件列表,具体的实现形式此处不深入说明 操作系统会提供给你一个非负整数,作为一个索引号,它的作用就像地址或者说指针或者说偏移 ...

  3. java io系列09之 FileDescriptor总结

    本章对FileDescriptor进行介绍 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_09.html FileDescriptor 介绍 Fil ...

  4. 文件句柄FileDescriptor的hanle/fd两个字段分析

    对于FileInputStream/FileOutputStream/RandomAccessFile,使用handle来表示底层的文件句柄 对于ServerSocket/Socket,使用fd来表示 ...

  5. [转]FileDescriptor详解

    FileDescriptor是"文件描述符". FileDescriptor可以被用来表示开放的文件,开放的套接字等. 当FileDescriptor表示文件来说,当FIleDes ...

  6. Java IO(三)FileDescriptor

    Java IO(三)FileDescriptor 一.介绍 FileDescriptor 是文件描述符,用来表示开放文件.开放套接字等.当 FileDescriptor 表示文件时,我们可以通俗的将 ...

  7. JDK源码阅读-FileDescriptor

    本文转载自JDK源码阅读-FileDescriptor 导语 操作系统使用文件描述符来指代一个打开的文件,对文件的读写操作,都需要文件描述符作为参数.Java虽然在设计上使用了抽象程度更高的流来作为文 ...

  8. 本地spark报:java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createFileWithMode0(Ljava/lang/String;JJJI)Ljava/io/FileDescriptor;

    我是在运行rdd.saveAsTextFile(fileName)的时候报的错,找了很多说法……最终是跑到hadoop/bin文件夹下删除了hadoop.dll后成功.之前某些说法甚至和这个解决方法自 ...

  9. .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”

    FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...

随机推荐

  1. LintCode-最长公共子串

    题目描述: 给出两个字符串,找到最长公共子串,并返回其长度. 注意事项 子串的字符应该连续的出现在原字符串中,这与子序列有所不同. 样例 给出A=“ABCD”,B=“CBCE”,返回 2 public ...

  2. Http报文格式学习及Get和Post主要区别总结

    HTTP(HyperText Transport Protocol,超文本传送协议) http请求数据包的格式:头部(request line + header)+  数据(data) 头部和数据包体 ...

  3. 在SQL2005中部署CLR 程序集

    原文 在SQL2005中部署CLR 程序集 有关于CLR函数的用途和用法,请了解 SQL Server CLR 极速入门,启用.设计.部署.运行 http://www.yongfa365.com/It ...

  4. MapList 自己封装的

    //// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)/ ...

  5. Java算法——O(n)查询数列中出现超过半数的元素

    主要思想: 相邻元素两两比较,如果相同存入新数组,不同二者都删除.如果 某数出现次数超高n/2,则最后剩下的1元素为所求. public static int findMostElem(final A ...

  6. perl5 第四章 列表和数组变量

    第四章 列表和数组变量 by flamephoenix 一.列表二.数组--列表的存贮  1.数组的存取  2.字符串中的方括号和变量替换   3.列表范围  4.数组的输出  5.列表/数组的长度  ...

  7. 什么是Thrift

    起源 百度百科怎么说 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发. 它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, ...

  8. HDU 1796 容斥原理 How many integers can you find

    题目连接   http://acm.hdu.edu.cn/showproblem.php?pid=1796 处男容斥原理  纪念一下  TMD看了好久才明白DFS... 先贴代码后解释 #includ ...

  9. CSS引入的方式有哪些? link和@import的区别是?转载

    CSS引入的方式有哪些? link和@import的区别是? HTML 中引入 CSS 的方式 有 4 种方式可以在 HTML 中引入 CSS.其中有 2 种方式是在 HTML 文件中直接添加 CSS ...

  10. 下载文件夹里面的所有文件,并压缩成.zip压缩包的形式

    http://www.aspsnippets.com/Articles/Download-multiple-files-as-Zip-Archive-File-in-ASPNet-using-C-an ...