一入 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);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值