作者归档

Java IO: 字符流的Buffered和Filter

作者: Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com)

本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader、BufferedWriter、FilterReader、FilterWriter。

阅读全文

Java IO: InputStreamReader和OutputStreamWriter

作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

本章节将简要介绍InputStreamReader和OutputStreamWriter。细心的读者可能会发现,在之前的文章中,IO中的类要么以Stream结尾,要么以Reader或者Writer结尾,那这两个同时以字节流和字符流的类名后缀结尾的类是什么用途呢?简单来说,这两个类把字节流转换成字符流,中间做了数据的转换,类似适配器模式的思想。

阅读全文

Java IO: Reader和Writer

作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

Reader

原文链接

Reader是Java IO中所有Reader的基类。Reader与InputStream类似,不同点在于,Reader基于字符而非基于字节。换句话说,Reader用于读取文本,而InputStream用于读取原始字节。

阅读全文

Java IO: 序列化与ObjectInputStream、ObjectOutputStream

作者:Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com)

本小节会简要概括Java IO中的序列化以及涉及到的流,主要包括ObjectInputStream和ObjectOutputStream。

Serializable

原文链接

如果你希望类能够序列化和反序列化,必须实现Serializable接口,就像所展示的ObjectInputStream和ObjectOutputStream例子一样。

阅读全文

Java IO: Buffered和Data

作者:Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com)

本小节会简要概括Java IO中Buffered和data的输入输出流,主要涉及以下4个类型的流:BufferedInputStream,BufferedOutputStream,DataInputStream,DataOutputStream。

阅读全文

Java IO: ByteArray和Filter

作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

本小节会简要概括Java IO中字节数组与过滤器的输入输出流,主要涉及以下4个类型的流:ByteArrayInputStream,ByteArrayOutputStream,FilterInputStream,FilterOutputStream。请注意,为了清晰,这里忽略了必要的异常处理。想了解更多异常处理的信息,请参考Java IO异常处理。

阅读全文

Java IO: PipedInputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

PipedInputStream可以从管道中读取字节流数据,代码如下:

[code lang=”java”]
InputStream input = new PipedInputStream(pipedOutputStream);

int data = input.read();

while(data != -1) {

//do something with data…

doSomethingWithData(data);

data = input.read();

}

input.close();
[/code]

请注意,为了清晰,这里忽略了必要的异常处理。想了解更多异常处理的信息,请参考Java IO异常处理

阅读全文

Java IO: PipedOutputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

PipedOutputStream可以往管道里写入读取字节流数据,代码如下:

[code lang=”java”]
OutputStream output = new PipedOutputStream(pipedInputStream);

while(moreData) {

int data = getMoreData();

output.write(data);

}

output.close();
[/code]

请注意,为了清晰,这里忽略了必要的异常处理。想了解更多异常处理的信息,请参考Java IO异常处理

PipedOutputStream的write()方法取一个包含了待写入字节的int类型变量作为参数进行写入。

Java IO管道

一个PipedOutputStream总是需要与一个PipedInputStream相关联。当这两种流联系起来时,它们就形成了一条管道。要想更多地了解Java IO中的管道,请参考Java IO管道

Java IO: File

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

Java IO API中的FIle类可以让你访问底层文件系统,通过File类,你可以做到以下几点:

  • 检测文件是否存在
  • 读取文件长度
  • 重命名或移动文件
  • 删除文件
  • 检测某个路径是文件还是目录
  • 读取目录中的文件列表

请注意:File只能访问文件以及文件系统的元数据。如果你想读写文件内容,需要使用FileInputStream、FileOutputStream或者RandomAccessFile。如果你正在使用Java NIO,并且想使用完整的NIO解决方案,你会使用到java.nio.FileChannel(否则你也可以使用File)。

阅读全文

Java IO: RandomAccessFile

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

RandomAccessFile允许你来回读写文件,也可以替换文件中的某些部分。FileInputStream和FileOutputStream没有这样的功能。

创建一个RandomAccessFile

在使用RandomAccessFile之前,必须初始化它。这是例子:

[code lang=”java”]
RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw");
[/code]

阅读全文

Java IO: FileOutputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

FileOutputStream可以往文件里写入字节流,它是OutputStream的子类,所以你可以像使用OutputStream那样使用FileOutputStream。

这是一个FileOutputStream的例子:

阅读全文

Java IO: OutputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

OutputStream类是Java IO API中所有输出流的基类。子类包括BufferedOutputStream,FileOutputStream等等。参考Java IO概述这一小节底部的表格,可以浏览完整的子类的列表。

阅读全文

Java IO: FileInputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

FileInputStream可以以字节流的形式读取文件内容。FileInputStream是InputStream的子类,这意味着你可以把FileInputStream当做InputStream使用(FileInputStream与InputStream的行为类似)。

阅读全文

Java IO: InputStream

原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

InputStream类是Java IO API中所有输入流的基类。InputStream子类包括FileInputStream,BufferedInputStream,PushbackInputStream等等。参考Java IO概述这一小节底部的表格,可以浏览完整的InputStream子类的列表。

阅读全文

Java IO: 异常处理

原文链接 作者:Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)

流与Reader和Writer在结束使用的时候,需要正确地关闭它们。通过调用close()方法可以达到这一点。不过这需要一些思考。请看下边的代码:

[code lang=”java”]
InputStream input = new FileInputStream("c:\\data\\input-text.txt");

int data = input.read();

while(data != -1) {

//do something with data…  

doSomethingWithData(data);

data = input.read();

}

input.close();
[/code]

阅读全文

return top