杜伟健
版权声明:本资料只免费提供给2011级软件7班同学使用,其他任何未经授权的人擅自传播、印制,均视为侵权行为。
一、文本文件(Text File)
1、输出(output)类 (to the file)
(1)PrintWriter
注意:不可以接文件名,可通过套用FileOutputStream来实现。
例如PrintWriter outputStream =new PrintWriter(new FileOutputStream("out.txt");
常用方法:print()、println():写文件 ,close():保存并关闭文件。
(2)FileOutputStream
注意:可以接文件名。
例:public static void main(String[] args)
{
PrintWriter outputStream = null;
try
{
outputStream = new PrintWriter(new FileOutputStream("out.txt"));
}
catch(FileNotFoundException e)
{
System.out.println("Error opening the file out.txt.");
System.exit(0);
}
System.out.println("Enter three lines of text:");
String line = null;
int count;
for (count = 1; count <= 3; count++)
{
line = scan.nextLine();
outputStream.println(count + " " + line);
}
outputStream.close();
System.out.println("... written to out.txt.");
}
2、输入(input)类 (from the file)
(1)BufferedReader
注意:不可以接文件名,可通过套用FileReader来实现。
例如:BufferedReader inputStream =new BufferedReader(new FileReader("data.txt"));
常用方法:read():读取一个字符,readLine():读取一行。读到文章结尾,返回-1。
例:int count = 0;
String line = inputStream.readLine();
while (line != null)
{
count++;
outputStream.println(count + " " + line);
line = inputStream.readLine();
}
补充:读取一个单词用java.util.*包内的StringTokenizer类
例:String inputLine = scan.nextLine();
StringTokenizer wordFinder =new StringTokenizer(inputLine, " \\n.,");
while(wordFinder.hasMoreTokens())
{
System.out.println(wordFinder.nextToken());
}
(2)FileReader
注意:可以接文件名。
二、二进制文件(Binary File)
1、输出(output)类 (to the file)
(1)ObjectOutputStream
注意:不可以接文件名,可通过套用FileReader来实现。
例如:ObjectOutputStream outputStream=new ObjectOutputStream(new FileOutputStream("numbers.dat"));
常用方法:writeInt(int n),writeDouble(double x),writeBoolean(boolean b),
writeUTF(String s),writeChar((int) 'A')写入数值,close():保存并关闭文件。
(2)FileOutputStream
注意:可以接文件名。
2、输入(input)类 (from the file)
(1)ObjectInputStream
注意:不可以接文件名,可通过套用FileReader来实现。
例如:ObjectInputStream inStream =new ObjectInputStream (new FileInputStream("numbers.dat"));
常用方法:readInt(),readDouble(),readBoolean()读取数值,close():保存并关闭文件。
(2)FileInputStream
注意:可以接文件名。
例:public static void main(String[] args)
{
String fileName = null;
try
{
System.out.println("Enter file name:");
fileName = scan.nextLine();
ObjectInputStream inputStream =new ObjectInputStream(new FileInputStream(fileName));
int n;
System.out.println("Reading nonnegative ");
System.out.println("in the file " + fileName);
n = inputStream.readInt();
while (n >= 0)
{
System.out.println(n);
n = inputStream.readInt();
}
System.out.println("End of reading from file.");
inputStream.close();
}
catch(IOException e)
{
System.out.println(…);
}
}
三、注意点
1、每个read方法都抛出IOException。
2、read到文章结束会抛出EOFException。
3、读取错误数据类型,不会出现错误信息。
例:try
{
DataInputStream inputStream =new DataInputStream(new FileInputStream("numbers.dat"));
int n;
System.out.println("Reading ALL the integers");
System.out.println("in the file numbers.dat.");
try
{
while (true)
{
n = inputStream.readInt();
System.out.println(n);
}
}
catch(EOFException e)
{
System.out.println("End of reading from file.");
}
inputStream.close();
}
catch(FileNotFoundException e)
{
System.out.println("Cannot find file numbers.dat.");
}
catch(IOException e2)
{
System.out.println("Problem with input from file numbers.dat.");
}