一入 Java 深似海 -- S08E01 Java I/O流 学习笔记
字节流 (Java I/O Byte Streams)
- interface
- InputStream
- OutputStream
- 直接实现
- FileInputStream / FileOutputStream
- ByteArrayInputStream / ByteArrayOutputStream
- 装饰器模式
- FilterInputStream
- BufferedInputStream
- ObjectInputStream
- DataInputStream
代理模式 与 装饰器模式 的区别
字符流 (Character Streams)
ASCII (基础编码)
Unicode (Java 默认编码)
UTF-8 / gbk
- 直接实现
- StringReader / StringWriter
- FileReader / FileWriter
- 适配器模式
- InputStreamReader / OutputStreamWriter
- 装饰器模式
- 缓冲 BufferedReader / BufferedWriter
- 管道 PipedReader / PipedWriter
- FilterReader / FilterWriter
推荐使用 apache commons-io 工具
Commons-IO
Java I/O 流操作
- Scanner
- public Scanner(Readable source)
- public abstract class Reader implements Readable, Closeable
- Formatter
- 命令行交互
- System.in.read()
- Console console = System.console()
- DataStreams
- DataOutputStream
- ObjectStreams
- ObjectOutputStream
@Test
public void test2() {
StringReader stringReader = new StringReader("1 2 3 4 5 6 7 8 9 ");
Scanner scanner = new Scanner(stringReader);
scanner.useDelimiter("\\s");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
System.out.println("---");
}
@Test
public void test5() {
File file = new File("test.ser");
System.out.println(System.getProperty("user.dir"));
// /Users/kevin/Documents/gitee/java-read-sources-sample
}
@Test
public void test6() throws IOException {
File file = new File("test.ser");
try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(file))) {
objectOutputStream.writeObject(Arrays.asList(1, 2, 3, 4, 5, 2, 3));
objectOutputStream.flush();
// objectOutputStream.close();
// 自动close
}
}
@Test
public void test7() throws IOException, ClassNotFoundException {
File file = new File("test.ser");
try (ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(file))) {
List list = (List) objectInputStream.readObject();
System.out.println(list);
}
}