要点提示:使用Scanner类从文件中读取文本數据,使用PrintWriter类向文本文件写入数据。

File对象封装了文件或路径的属性,但是它既不包括创建文件的方法,也不包括从/向 文件读/写数据(称为数据输入输出,简称I/O)的方法。为了完成I/O操作,需要使用恰当 的JavaI/O类创建对象。
下面介绍如何使用Scanner和PMntWriter类从(向)文本文件读(写) 字符串和数值信息


目录

  • 使用PrintWriter向文件中写数据
  • 使用try-with-resources自动关闭资源
  • 使用Scanner读数据



使用PrintWriter向文件中写数据

java.io.PrintWriter类可用来创建一个文件并向文本文件写人数据。

步骤:

  1. 为一 个文本文件创建一个PrintWriter对象,如下所示:
    PrintWriter output = new PrintWriter(filename);
  2. 调用PrinterWriter对象上的print、println和printf方法向文件写入数据。
    下面总结了PrintWriter中的常用方法:

    使用方法:output.print()就可以向output代表的文件中输入数据了。

这里可以类比加深理解:
我们使用System.out.print、System.out.println和System.out.printf方法向控制台输出文本。

  • System.out是控制台的标准Java对象。
  • 同样的output就是我们创建的文件的一个对象,然后使用 print、println和printf向文件中写入文本。

注意:

  1. 如果文件已经存在,调用PrintWriter, 那么文件的当前内容将在不和用户确认的情况下被废弃。
  2. 调用PrintWriter的构造方法可能会抛出某种I/O异常。Java强制要求编写代码来处理这类异常。只要在方法头声明中声明throws Exception即可。
  3. 必须使用close()方法关闭文件。如果没有调用该方法,数据就不能正确地保存在文件中。

使用try-with-resources自动关闭资源

由上面我们可以知道,我们必须使用close()方法关闭文件。但经常会忘记关闭文件。JDK7提供了下面的新的try -with -resources语法来自动关闭文件。


try(声明和创建资源 ){
使用资源来处理文件;
}


举例:

java printwriter生成并写入文件 java中printwriter用法_编程语言


说明:

  • 关键字try后声明和创建了一个资源。注意,资源放在括号中。资源必须是AutoCloseable的子类型,比如PrinterWHter,具有一个close()方法。
  • 资源的声明和创建必须在同一行语句中,可以在括号中进行多个资源的声明和创建。
  • 紧接着资源声明的块中的语句使用资源。块结束后,资源的close()方法自动调用以关闭资源。
  • 使用try -with -resourse不仅可以避免错误,而且可以简化代码。

使用Scanner读数据

引语:
Java.util.Scanner类用来从控制台读取字符串和基本类型数值。

  • Scanner 可以将输人分为由空白字符分隔的标记。
  • 为了能从键盘读取,需要为System.in 创建一个 Scanner,

如下所示: Scanner input = new Scanner(System.in);

同样的,为了从文件中读取,需要为文件创建一个Scanner,如下所示:


Scanner input = new Scanner(new File (filename));

下图总结了Scanner类的常用方法:

java printwriter生成并写入文件 java中printwriter用法_java_02


说明:

  1. new Scanner(String)为给定的字符串创建一个Scanner。
    为创建Scanner从文件中读取数据,必须使用构造方法new File(filename)
    利用java.io.File类创建File的一个 实例,然后使用new Scanner(File)为文件创建一个Scanner。
  2. 调用构造方法new Scanner(File)可能会抛出一个I/O异常。因此同样必须在方法头声明throws Exception。
  3. 没有必要关闭输入文件,但这样做是一种释放被文件占用的资源的好方法。 也可以使用try-with-resources语法来写程序。