Filepropertydescriptorr这个类有什么作用

您的位置:&-&-> -& Andys File Descriptor 1.01
同类周下载排行
软件授权:免费版 
软件大小:239KB
人气指数:
软件语言:英文
软件评级:
运行环境:Winxp/vista/win7/
更新时间: 10:31:28
出 品 人:&&
软件合集:
是一个实用的小工具,旨在帮助文件中作出说明。让您更好的了解它。
热门软件推荐
热门安卓应用推荐
牛华网推荐Java&写文件:FileOutputStream
[声明]:本文为本博主(gulibia)原创。欢迎转载。联系方式:
无论是二进制数据还是字符数据(文本数据)都可以用文件输出流 java.io.FileOutputStream
以字节流的方式保存到所指定文件。不过,如果写字符数据,FileWriter
更方便一些。FileWriter 除了提供了文件写入功能之外,还内置了字符编码功能。(关于 FileWriter
的使用,请参考本站相关文章)
java.io.FileOutputStream& 类继承和重写了抽象类
java.io.OutputStream。他们两个都是从最早的JDK, JDK1.0就已经存在的类。
[父类 OutputStream]
抽象类 OutputStream
是所有字节输出流的基类,它共定义了一个构造方法和五个方法。构造方法什么也没做。在五个方法中,有,
三个 Write 方法:
public abstract void write(int b) throws
IOException
向输出流里写入一个值为 b 的字节。需要注意的是,实际写入的是 int 类型 b 的低8位,其余的 24 位被忽略。
如果有错误,则抛出 IOException。调用这个方法时,需要捕获和处理 IOException。这个方法是OutputStream
类的唯一的抽象方法,需要具体类必须实现。一般的例程为参看下面示例程序。
public void write(byte[] b)
throws IOException
向输入流里写入一个字节数组b。效果和 write(b, 0, b.length) 相同。调用这个方法时,需要捕获和处理
IOException。OutputStream&和
FileOutputStream&的实现都是调用了下面的方法。
public void write(byte[] b, int off, int len)
throws IOException&
把位置为 off、长度为len 的字节数组b中的数据写入到输出流中。OutputStream 的实现是反复调用write(int
b), 子类应该提供更有效率的实现。如果 b 是 null, 则抛出NullPointerException 。如果off 或者
len 小于0,或者 off + len 大于数组 b 的长度, 则抛出 IndexOutOfBoundsException
FileOutputStream& 重写了这个方法。
下面用一段例程演示 void write(int b)&和 void write(byte[]
b) 的使用:
// TestFileOutputStream.java
import java.io.*;
public class TestFileOutputStream
& public static void testWrite()
FileOutputStream fo = new FileOutputStream("MyOut.dat");
fo.write(0);
fo.write(0x43);
fo.write(0x44);
//fo.flush(); // 如果OutputStream
的实现使用了缓存,这个方法用于清空缓存里的数据,并通知底层去进行实际的写操作
&&&&&&&&&&&&&&&&&&&
// FileOutputStream 没有使用缓存,因此这个方法调用与否在这个例子的运行结果没有影响。
fo.close();&& //
注意:如果用户忘记关闭打开的文件,系统可以通过 finalyze 方法在垃圾回收的时候替用户关闭这个流。
&&&&&&&&&&&&&&&&&&&
// 虽然如此,用户应该显示的调用这个方法。
}catch(IOException e)
e.printStackTrace();
& public static void testWriteBytes()
&// 构造一个要写的数据:
&byte[] data =
"这个例子测试文件写".getBytes("GB2312");
FileOutputStream fo = new FileOutputStream("MyOut1.data");
fo.write(data);
//fo.flush();&&&&&
//如果OutputStream 的实现使用了缓存,这个方法用于清空缓存里的数据,并通知底层去进行实际的写操作
&&&&&&&&&&&&&&&&&&&&&&&&
// FileOutputStream 没有使用缓存,因此这个方法调用与否在这个例子的运行结果没有影响。
fo.close();&&&&&
}catch(Exception e)
e.printStackTrace();
& public static void main(String[]args)
testWrite();
testWriteBytes();
其余两个方法
public void flush() throws IOException
如果OutputStream
的实现使用了缓存,这个方法用于清空缓存里的数据,并通知底层去进行实际的写操作。需要注意的是,这个缓存特指Java层的缓存。这个方法对底层(如操作系统)的缓存不起作用。参见
FileDescriptor。
OutputStream 中这个方法的实现什么也没做。具体子类应该重写这个方法。FileOutputStream
没有使用缓存,因此没有重写这个方法。因此,上面代码示例中,这个方法调用与否对运行结果没有影响。
public void
close()&throws
这个方法用于关闭流。虽然,如果用户忘记调用这个方法,系统可以通过 finalyze 方法在 OutputStream
对象垃圾回收的时候替用户关闭这个流。但用户应该养成良好的习惯显示的调用这个方法!
OutputStream
中这个方法的实现什么也没做。具体子类应该重写这个方法。java.io.FileOutputStream&重写了这个方法。&用于真正关闭相应的文件资源。
[FileOutputStream
的其他方法]:&
java.io.FileOutputStream 除了重写 OutputStream
中上述四个方法之外,还提供了额外三个方法:
protected void finalize()&throws
&。这个方法其实是重写了 Object
中的这个方法(Object 是所有Java 类(包括数组类型)的“根级”父类)。这个方法是被 Java
虚拟机中的垃圾回收器调用的。用于 Java 对象已经不存在了但它占有的资源没有释放的情况。FileOutputStream
实现中,这个方法主要是调用了 close() 方法。上面例子中,如果用户没有调用 close()
方法,系统就通过这个方法在垃圾回收的时候关闭文件。但写程序时应该养成显示关闭文件的习惯。
public final
getFD()&throws
。 这个方法返回 FileDescriptor&
对象,这个对象表示这个文件流对应的文件系统中的实际文件。
关于 FD 的使用,请参见本站相关文章。
getChannel() 这是在 JDK1.4 中引入的方法。用于支持New IO
的特性。这个方法返回 FileChannel 对象,这个对象表示这个文件对应的文件系统中的通道。关于Channel 和 New
IO,请参阅本站其它文章。
[关于 FileOutputStream&的构造]
FileOutputStream 提供了五个构造方法:
FileOutputStream(File file)
throws&FileNotFoundException&&和 FileOutputStream(String&name)&throws
FileNotFoundException&都是通过实际文件路径(或其标识的File对象)来创建文件流。需要注意的是,如果文件不存在,(待查:是否会创建文件)。如果文件存在,则这两个构造方法中有打开文件的操作。如果文件给定的是目录而不是文件,或者文件不存在又不能创建,或者文件存在却不能打开,则抛出
FileNotFoundException&异常。如果文件由于安全保护而不允许读取,则抛出
SecurityException 异常。
写文件需要考虑的一个问题是,是从文件头写入(覆盖原有数据),还是从文件尾写入(增加数据)。上面的两个构造方法都是按照前者实现的,针对后者的情况,FileOutputStream
提供另外两个构造方法:
FileOutputStream(File file, boolean append)
throws&FileNotFoundException&&和 FileOutputStream(String&name,
boolean append)&throws
FileNotFoundException&
这两个构造方法多了一个 append 参数,如果参数值是 true, 则是“增加数据”,如果参数值是 false,
则是“覆盖原有数据”。即,退化成前两种构造方法。
最后,同 FileInputStream
一样, FileOutputStream
提供了用已经打开的文件来创建一个新的文件流:
FileInputStream(&fdObj)
这个构造方法里没有打开文件操作。输入的 FD 对应的一定是一个已经打开的文件。
有一个有趣的问题:如果我用同一个 FileDescriptor
对象创建两个流:一个输入流,一个输出流。他们能同时进行读写操作吗?下面的示例代码给出试验:
还有一个问题:&是否允许对同一个文件打开多个流,
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。> Java io 入门(九)FileDescriptor介绍及使用
Java io 入门(九)FileDescriptor介绍及使用
FileDescriptor 介绍
FileDescriptor 是&文件描述符&。
FileDescriptor 可以被用来表示开放文件、开放套接字等。
以FileDescriptor表示文件来说:当FileDescriptor表示某文件时,我们可以通俗的将FileDescriptor看成是该文件。但是,我们不能直接通过FileDescriptor对该文件进行操作;若需要通过FileDescriptor对该文件进行操作,则需要新创建FileDescriptor对应的FileOutputStream,再对文件进行操作。
in, out, err介绍
(01)&in&&--&标准输入(键盘)的描述符 &(02)&out&--&标准输出(屏幕)的描述符 &(03)&err&--&标准错误输出(屏幕)的描述符&
它们3个的原理和用法都类似,下面我们通过out来进行深入研究。
out 的作用和原理
out是标准输出(屏幕)的描述符。但是它有什么作用呢?
我们可以通俗理解,out就代表了标准输出(屏幕)。若我们要输出信息到屏幕上,即可通过out来进行操作;但是,out又没有提供输出信息到屏幕的接口(因为out本质是FileDescriptor对象,而FileDescriptor没有输出接口)。怎么办呢?
很简单,我们创建out对应的&输出流对象&,然后通过&输出流&的write()等输出接口就可以将信息输出到屏幕上。如下代码:
try&{ &&&&&FileOutputStream&out&=&new&FileOutputStream(FileDescriptor.out); &&&&&out.write('A'); &&&&&out.close(); &}&catch&(IOException&e)&{ &} &
执行上面的程序,会在屏幕上输出字母'A'。
为了方便我们操作,java早已为我们封装好了&能方便的在屏幕上输出信息的接口&:通过System.out,我们能方便的输出信息到屏幕上。
因此,我们可以等价的将上面的程序转换为如下代码:
System.out.print('A');
下面讲讲上面两段代码的原理
查看看out的定义。它的定义在FileDescriptor.java中,相关源码如下:
public&final&class&FileDescriptor&{ &&&&&&private&int& &&&&&&public&static&final&FileDescriptor&out&=&new&FileDescriptor(1); &&&&& &&&&&private&FileDescriptor(int&fd)&{ &&&&&&&&&this.fd&=& &&&&&&&&&useCount&=&new&AtomicInteger(); &&&&&} &&&&&&... &} &
从中,可以看出
(01) out就是一个FileDescriptor对象。它是通过构造函数FileDescriptor(int fd)创建的。
(02) FileDescriptor(int fd)的操作:就是给fd对象(int类型)赋值,并新建一个使用计数变量useCount。
fd对象是非常重要的一个变量,&fd=1&就代表了&标准输出&,&fd=0&就代表了&标准输入&,&fd=2&就代表了&标准错误输出&。
FileOutputStream out = new FileOutputStream(FileDescriptor.out); 就是利用构造函数FileOutputStream(FileDescriptor fdObj)来创建&Filed.out对应的FileOutputStream对象&。
关于System.out是如何定义的。可以参考& 深入了解System.out.println(&hello world&); &
通过上面的学习,我们知道,我们可以自定义标准的文件描述符[即,in(标准输入),out(标准输出),err(标准错误输出)]的流,从而完成输入/输出功能;但是,java已经为我们封装好了相应的接口,即我们可以更方便的System.in, System.out, System.err去使用它们。
另外,我们也可以自定义&文件&、&Socket&等的文件描述符,进而对它们进行操作。参考下面示例代码中的testWrite(), testRead()等接口。
本文地址 :
------分隔线----------------------------文件操作_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:139.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢file descriptor
[fail dis'kript?]
[fa?l d?'skr?pt?]
文件描述符
文件描述符;
文件说明符;
档案描述子;
档案描述元
大家都在背:
1. The file descriptor object for this socket.
此套接字的文件描述符对象.
来自互联网
2. Return the file descriptor as an int.
传回描述档案的整数值.
来自互联网
1. 文件描述符
文件描述符(File Descriptor),用一个数字(通常为0-9)来表示一个文件。常用的文件描述符如下:文件描述符名称常用缩写默认值 …
- 基于2706个网页
2. 文件说明符
软件开发常用名词中英文对... ... File Associations Management 文件关联管理 file descriptor 文件说明符 file handle 文件句柄.
- 基于81个网页
3. 档案描述子
档案描述子( file descriptor )被重用了, 我们的执行状况就会被输出到其他的地方,像是管线 (pipe)、socket、 或是某些档案。这样有 …
- 基于81个网页
4. 档案描述元
  在上述方法中,你可以在呼叫前更改档案描述元 (file descriptor) 名称:  open(STDOUT, &&logfile&);  system(&ls&);  或者使用 Bou.
- 基于32个网页
1. 例如文件描述符
in UNIX systems , a process includes an executable program and range of resources , such as file descriptors table and address space .在UNIX系统中,一个进程包括一个可执行的程序和一系列的资源,例如文件描述符表和地址空间。
- 基于2个网页
1. 文件描述符表
in UNIX systems , a process includes an executable program and range of resources , such as file descriptors table and address space .在UNIX系统中,一个进程包括一个可执行的程序和一系列的资源,例如文件描述符表和地址空间。
- 基于2个网页
specifies the value for maximum file descriptors that can be opened by this process ., 每个进程最大打开文件数.
- 基于1个网页
1. 文件描述损坏
PSP的一些相关设置和PSP... ... * 0x = No such device 未找到驱动器 * 0x = Bad file descriptor 文件描述损坏.
- 基于8个网页
0){var rand = parseInt(Math.random() * (000)+100000);top.location.href='/'+encodeURIComponent(document.getElementById('s').value.trim().replace( / /g, '_'))+'?renovate='+}else{top.location.href='/'+encodeURIComponent(document.getElementById('s').value.trim().replace( / /g, '_'));};}" action="/">
查过的词自动加入生词本
Tip:此功能设置只能在登录状态下生效
file descriptor
需要改进的内容:
单词大小写
其他(请在下面补充描述)
错误描述:
您还可在这里补充说明下 O(∩_∩)O~
方便的话,请您留下一种联系方式,便于问题的解决:}

我要回帖

更多关于 bitmapdescriptor 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信