要点提示:使用Scanner类从文件中读取文本數据,使用PrintWriter类向文本文件写入数据。
File对象封装了文件或路径的属性,但是它既不包括创建文件的方法,也不包括从/向 文件读/写数据(称为数据输入输出,简称I/O)的方法。为了完成I/O操作,需要使用恰当 的JavaI/O类创建对象。
下面介绍如何使用Scanner和PMntWriter类从(向)文本文件读(写) 字符串和数值信息
目录
- 使用PrintWriter向文件中写数据
- 使用try-with-resources自动关闭资源
- 使用Scanner读数据
使用PrintWriter向文件中写数据
java.io.PrintWriter类可用来创建一个文件并向文本文件写人数据。
步骤:
- 为一 个文本文件创建一个PrintWriter对象,如下所示:
PrintWriter output = new PrintWriter(filename); - 调用PrinterWriter对象上的print、println和printf方法向文件写入数据。
下面总结了PrintWriter中的常用方法:
使用方法:output.print()就可以向output代表的文件中输入数据了。
这里可以类比加深理解:
我们使用System.out.print、System.out.println和System.out.printf方法向控制台输出文本。
- System.out是控制台的标准Java对象。
- 同样的output就是我们创建的文件的一个对象,然后使用 print、println和printf向文件中写入文本。
注意:
- 如果文件已经存在,调用PrintWriter, 那么文件的当前内容将在不和用户确认的情况下被废弃。
- 调用PrintWriter的构造方法可能会抛出某种I/O异常。Java强制要求编写代码来处理这类异常。只要在方法头声明中声明throws Exception即可。
- 必须使用close()方法关闭文件。如果没有调用该方法,数据就不能正确地保存在文件中。
使用try-with-resources自动关闭资源
由上面我们可以知道,我们必须使用close()方法关闭文件。但经常会忘记关闭文件。JDK7提供了下面的新的try -with -resources语法来自动关闭文件。
try(声明和创建资源 ){
使用资源来处理文件;
}
举例:
说明:
- 关键字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类的常用方法:
说明:
- new Scanner(String)为给定的字符串创建一个Scanner。
为创建Scanner从文件中读取数据,必须使用构造方法new File(filename)
利用java.io.File类创建File的一个 实例,然后使用new Scanner(File)为文件创建一个Scanner。 - 调用构造方法new Scanner(File)可能会抛出一个I/O异常。因此同样必须在方法头声明throws Exception。
- 没有必要关闭输入文件,但这样做是一种释放被文件占用的资源的好方法。 也可以使用try-with-resources语法来写程序。