存储在变量,数组和对象中的数据是暂时的,当程序终止时它们就会丢失。为了能够永久地保存程序中创建的数据,需要将它们存储到磁盘或光盘上的文件中。这些文件可以传送,也可以随后被其他程序使用。
在文件系统中,每个文件都存放在一个目录下。绝对文件名是由文件名和它的完整路径以及驱动器字母组成,例如,c:\\book\\Welcome.java是文件Welcome.java在Windows操作系统上的绝对文件名。这里的c:\\book称为该文件的目录路径.
File类包含许多获取文件属性的方法以及重命名和删除文件的方法,但是File类不包含读写文件内容的方法,在程序中,不要直接使用绝对文件名,否则可能会造成只能在windows上工作,但是不能再其他平台工作,应该使用与当前目录相关的文件名。
1.文件输入与输出
File对象封装了文件或路径的属性,但是它既不包括创建文件,也不包括从文件读数据的方法,为了完成I/O操作,需要使用恰当的java I/O类创建对象。
(1)使用PrintWriter写数据
java.io.PrintWriter可用来创建一个文件并向文本文件写入数据,首先,必须为一个文本文件创建一个PrintWriter对象,如下所示:
PrintWriter output = new PrintWriter(filename);
然后可以调用PrintWriter对象上的print,println和printf方法向文件写入数据,我们下面创建一个PrintWriter实例并且向文件中写入两行数据的例子,程序清单如下:
package writedata
/**
*
* @author john
*/
public class Writedata {
/**
* @param args the command line arguments
*/
public static void main(String[] args)throws Exception {
// TODO code application logic here
java.io.File file = new java.io.File(\”scorex.txt\”);
if(file.exists()){
System.out.println(\”File already exists\”);
System.exit(0);
}
java.io.PrintWriter output = new java.io.PrintWriter(file);
output.print(\”John T Smith\”);
output.println(90);
output.print(\”Eric K Jones\”);
output.println(85);
output.close();
}
}
我们首先检查score.txt文件是否存在,如果存在,则退出该程序,如果文件不存在,调用PrintWriter的构造方法会创建一个新文件,调用这种方法可能会抛出某种I/O异常,我们可以再方法头中声明throws Exception即可,之后我们必须用close()方法关闭文件,如果没有调用该方法,数据就不能正确地保存在文件中。
至于我们新创建的txt文件在哪里,就在我们创建java程序的时候,代码包所存在的位置,也可以通过控制台索引全局查找得到。