【Java Core】输入与输出 3

「这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战

本系列将介绍Java中用于输入和输出的各种应用编程接口(Application Programming Interface, API)。

1. 文本输出

对于文本输出,可以使用PrintWriter。这个类拥有以文本格式打印字符串和数字的方法。为了打印文件,需要用文件名和字符编码方式构建一个PrintStream对象:

    PrintWriter pw = new PrintWriter("demo.txt", StandardCharsets.UTF-8);
复制代码

为了输出到打印写出器,需要使用与使用System.out时相同的print、println和printf方法。你可以用这些方法来打印数字(int、short、long、float、double)、字符、boolean值、字符串和对象。

例如,考虑下面的代码:

 String name = "Jack Ma";
 int age = 27;
 pw.print(name);
 pw.print(' ');
 pw.println(age);
复制代码

它把字符

Jack Ma 27

输出到写出器pw,之后这些字符将会被转换成字节并最终写入demo.txt中。

println方法在行中添加了对目标系统来说恰当的行结束符,就是通过调用System.getProperty("line.separator")而获得的字符串。

如果写出器设置为自动冲刷模式,那么只要println被调用,缓冲区中的所有字符都会被发送到它们的目的地(打印写出器总是带缓冲区的)。默认情况下,自动冲刷机制是禁用的,你可以通过使用PrintWriter(Writer writer, boolean autoFlush)来启用或禁用自动冲刷机制:

    PrintWriter pw = new PrintWriter(
        new OutputStreamWriter(
            new FileOutPutStream("demo.txt"), StandardCharsets.UTF_8), true);
复制代码

2. 文本输入

想要将文件一行行读入,可以调用:

    List<String> lines = Files.readAllLines(path, charset);
复制代码

调用next方法可以产生下一个符号:

    while (in.hasNext())
    {
        String word = in.next();
        . . .
    }
复制代码

在早期的Java版本中,处理文本输入的唯一方式就是通过BufferedReader类。它的read.Line方法会产生一行文本,或者在无法获得更多的输入时返回null。典型的输入循环方式看起来像下面这样:

    InputStream inputStream = . . .;
    Reader reader = new BufferedReader(new InputStream(inputStream, charset));
    try
    {
        String line;
        while ((line = in.readLine()) != null)
        {
            . . .
        }
    }
复制代码

感谢观看,这是Java输入与输出的第3篇文章,如果您有兴趣,可以关注一下我,方便查看后续文章,一起学习,共同进步,不胜感激!

猜你喜欢

转载自juejin.im/post/7032072974589132830