IO流java.io.PrintWriter

2019-04-07  本文已影响0人  Finlay_Li

向文件写入内容

import java.io.File;

import java.io.FileNotFoundException;

import java.io.PrintWriter;

public class Demo {

public static void main(String[] args) {

    String path = File.separator + "home" + File.separator + "siu" +

                  File.separator + "work" + File.separator + "demo.txt";

    //创建文件对象

    File file = new File(path);

    PrintWriter p = null;

    try {

        //此处构造函数还可以传其他对象,具体参考API文档

        p = new PrintWriter(file);

        //向文件写入一行,此外还有print()和printf()方法

        p.println("如果有一天我回到从前");

        p.println("回到最原始的我");

        p.println("你是否会觉得我不错");

        //刷新流

        p.flush();

    } catch (FileNotFoundException e) {

        e.printStackTrace();

    } finally {

        p.close();

    }  

}

}

与PrintWriter类似的还有一个PrintStream类,此处以PrintWriter举例是因为文本文件具有人为可读性

而二进制文件(字节模式)则需要使用专门的程序来读取

可能有人会问:FileOutputStream、 FileWriter都能写文件,那么为何还需要PrintWriter和PrintStream类

如果细看API文档,可以知道前者单纯的字符写入流和字节写入流操作的方式大多用数组进行

对文件的细化处理非常不方便,而PrintWriter和PrintStream则很好的解决了这一问题,提供print()等方法

并且,PrintWriter和PrintStream对于不存在文件对象的情况下会直接创建,如果已有文件对象

它们则会把原有文件给覆盖掉,却没有增加方法

解决这问题也很简单,再看API文档

PrintWriter有一个构造方法PrintWriter(Writer out),也就是能够传入Writer对象

PrintStream有一个构造方法PrintStream(OutputStream out),也就是能传入OutputStream对象

因此,我们这样写就可以了

new PrintWriter(new FileWriter(file,true))

new PrintStream(new FileOutputStream(file,true))

既能增加数据,也能更高效的处理文件,见如下代码示范

PrintWriter追加数据功能

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

public class Demo {

public static void main(String[] args) {

    String path = File.separator + "home" + File.separator + "siu" +

                  File.separator + "work" + File.separator + "demo.txt";

    //创建文件对象

    File file = new File(path);

    PrintWriter p = null;

    try {

        //利用FileWriter方式构建PrintWriter对象,实现追加

        p = new PrintWriter(new FileWriter(file,true));

        p.println("尼玛 这一句就是追加的 看到没");

        p.flush();

    } catch (IOException e) {

        e.printStackTrace();

    } finally {

        //我们来小心翼翼的关闭流,好吧^_^

        p.close();

    }

}

}

image.png
上一篇 下一篇

猜你喜欢

热点阅读