Java IO流系列⑥ — 打印流,数据流

导读:本篇文章讲解 Java IO流系列⑥ — 打印流,数据流,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

也许你感觉自己的努力总是徒劳无功,但不必怀疑,你每天都离顶点更进一步。今天的你离顶点还遥遥无期。但你通过今天的努力,积蓄了明天勇攀高峰的力量。加油!

这两个部分内容用的频率不是很多,非重点,有所了解即可。

打印流概述

实现将基本数据类型的数据格式转化为字符串输出
打印流:

  • PrintStream
  • PrintWriter

这两个流均为输出流
②提供了一系列重载的print()和println()方法,用于多种数据类型的输出
③PrintStream和PrintWriter的输出不会抛出IOException异常
④PrintStream和PrintWriter有自动flush功能

打印流的应用练习

任务:将255个ASCII码值对应的字符打印到一个文件当中
代码实现:

@Test
    public void test2() {
        PrintStream ps = null;
        try {
            FileOutputStream fos = new FileOutputStream(new File("D:\\IO\\text.txt"));
            // 创建打印输出流,设置为自动刷新模式(写入换行符或字节 '\n' 时都会刷新输出缓冲区)
            ps = new PrintStream(fos, true);
            if (ps != null) {// 把标准输出流(控制台输出)改成文件
                System.setOut(ps);
            }


            for (int i = 0; i <= 255; i++) { // 输出ASCII字符
                System.out.print((char) i);
                if (i % 50 == 0) { // 每50个数据一行
                    System.out.println(); // 换行
                }
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (ps != null) {
                ps.close();
            }
        }
    }

数据流概述

方便地操作Java语言的基本数据类型和String的数据
数据流有两个类:(用于读取和写出基本数据类型、String类的数据)

  • DataInputStream
  • DataOutputStream

分别“套接”在 InputStream 和 OutputStream 子类的流上
DataInputStream中的方法:
数据流
DataOutputStream中的方法:
将上述的方法的read改为相应的write即可

数据流的应用练习

练习:①将内存中的字符串、基本数据类型的变量写出到文件中。
②将文件中存储的基本数据类型变量和字符串读取到内存中,保存在变量中。

@Test
    public void test3() throws IOException {
        //1.
        DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.txt"));
        //2.
        dos.writeUTF("Tom");
        dos.flush();//刷新操作,将内存中的数据写入文件
        dos.writeInt(23);
        dos.flush();
        dos.writeBoolean(true);
        dos.flush();
        //3.
        dos.close();
    }
@Test
    public void test4() throws IOException {
        //1.
        DataInputStream dis = new DataInputStream(new FileInputStream("data.txt"));
        //2.
        String name = dis.readUTF();
        int age = dis.readInt();
        boolean isMale = dis.readBoolean();

        System.out.println("name = " + name);
        System.out.println("age = " + age);
        System.out.println("isMale = " + isMale);

        //3.
        dis.close();

    }

注意点:读取不同类型的数据的顺序要与当初写入文件时,保存的数据的顺序一致!处理异常的话,仍然应该使用try-catch-finally.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/122320.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!