读取/写入
如果要将数据从来源读取,可以使用输入串流:java.io.InputStream
如果要将数据写入目的地,可以使用输出串流:java.io.OutputStream
这两个类都操作了java.io.Closeable接口,其父接口为java.io.AutoCloseable,
所以可以使用JDK7的自动关闭语法
文件流
FileInputStream FileOutputStream
字节流
ByteArrayInputStream ByteArrayOutputStream
打包器类
InputStream OutputStream 提供串流基本操作,
如果想要对输入输出的数据做加工处理,则可以使用打包器类
1.具备缓冲区作用的 BufferedInputStream BufferedOutputStream
2.具备数据转换作用的 DataInputStream DataOutputStream
3.具备对象串化能力的 ObjectInputStream ObjectOutputStream
字符处理
抽象化字符数据的读取来源 java.io.Reader
抽象化字符数据写出目的地 java.io.Writer
FileReader FileWriter可以对文档做读取与写入,读取或写入时会使用操作系统默认的编码来做字符转换
在启动JVM时,可以使用 -Dfile.encoding来指定编码
package com.leo;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
public class Main {
public static void main(String[] args) {
try {
URL url = new URL("http://www.baidu.com");
InputStream in = url.openStream();
OutputStream out = new FileOutputStream("F:/baidu.html");
dump(in, out);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void dump(InputStream in, OutputStream out) throws IOException {
try (InputStream inputStream = in; OutputStream outputStream = out) {
byte[] bytes = new byte[1024];
int length;
while ((length = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, length);
}
}
}
}