Java I/O全文摘要(四)数据源,文件流

15 篇文章 0 订阅
12 篇文章 0 订阅

本文摘要自Java I/O一书,选取中间精炼简单的部分,译成中文.

1. File stream

最常见的流通常与文件或者网络挂钩。

java.io.FileInputStream和 java.io.FileOutputStream 类,

java.io.InputStreamjava.io.OutputStream具体实现的子类。

但是,它并不管理文件,也不关心文件的可读可写或者移动一个文件到另一个地方。

如果你对文件管理感兴趣,参阅File(这个我们会在后文中说到)


2. 读文件

基本方法诸如:read( ), available( ), skip( ), 和close( ),都有

但是最常用的还是以下三个方法:

public FileInputStream(String fileName) throws IOException
public FileInputStream(File file) throws FileNotFoundException
public FileInputStream(FileDescriptor fdObj)

第一个方法,你可以使用相对路径。

文件名是平台独立的,所以硬编码一个文件名并非最佳实践。

所以最好使用File file参数的构造方法而非fileName的。

创建多级路径的FileInputStream可用如下方式完成:

File root = new File("/");
File dir = new File(root, "etc");
File child = new File(dir, "hosts");
FileInputStream fis = new FileInputStream(child);
但是这仍然假设了根路径是/

所以使用下面这一段代码会更好:

File[] roots = File.listRoots( )
File dir = new File(roots[0], "etc");
File child = new File(dir, "hosts");
FileInputStream fis = new FileInputStream(child);

如果试图读取一个不存在的文件,将会抛出 FileNotFoundException,它是java.io.IOException的子类


3. 额外方法

文件输入流拥有一个InputStream中没有的方法,用于获得文件描述符

public final FileDescriptor getFD( ) throws IOException

它将返回一个 java.io.FileDescriptor

可用于创建一个FileInputStream

可为一个文件创建多个FileInputStream,尽管很少有可能需要这样做。 

读文件将不会对文件产生影响,但是写就不同了。


4. 写文件

继承自OutputStream的通用方法:write( ), flush( ), and close( )

主要方法:

public FileOutputStream(String filename) throws IOException
public FileOutputStream(File file) throws IOException
public FileOutputStream(FileDescriptor fd)


需要注意的是,这三个构造方法将会:

如果文件不存在,则创建它。

如果文件存在,则覆盖它。

如果你需要在末尾添加一些数据,使用:

public FileOutputStream(String name, boolean append) throws IOException


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值