现在的位置: 首页 > 综合 > 正文

入门:Java 中对文件的读写操作之比较

2018年05月25日 ⁄ 综合 ⁄ 共 3573字 ⁄ 字号 评论关闭

  Java 对文件进行读写操作的例子很多,让初学者感到十分困惑,我觉得有必要将各种方法进行一次分析,归类,理清不同方法之间的异同点。

  一.在 JDK 1.0 中,通常是用 InputStream & OutputStream 这两个基类来进行读写操作的。InputStream 中的 FileInputStream 类似一个文件句柄,通过它来对文件进行操作,类似的,在OutputStream 中我们有 FileOutputStream 这个对象。

  用FileInputStream 来读取数据的常用方法是:FileInputStream fstream = new FileInputStream(args[0]);DataInputStream in = new DataInputStream(fstream);

  用 in.readLine() 来得到数据,然后用 in.close() 关闭输入流。完整代码见 Example 1。

  用FileOutputStream 来写入数据的常用方法是:FileOutputStream out out = new FileOutputStream(myfile.txt);PrintStream p = new PrintStream( out );

  用 p.println() 来写入数据,然后用 p.close() 关闭输入。完整代码见 Example 2。

  二.在 JDK 1.1中,支持两个新的对象 Reader & Writer, 它们只能用来对文本文件进行操作,而JDK1.1中的 InputStream & OutputStream 可以对文本文件或二进制文件进行操作。

  用FileReader 来读取文件的常用方法是:FileReader fr = new FileReader(mydata.txt);BufferedReader br = new BufferedReader(fr);

  用 br.readLing() 来读出数据,然后用br.close() 关闭缓存,用fr.close() 关闭文件。完整代码见 Example 3。

  用 FileWriter 来写入文件的常用方法是:FileWriter fw = new FileWriter(mydata.txt);PrintWriter out = new PrintWriter(fw);

  在用out.print 或 out.println 来往文件中写入数据,out.print 和 out.println的唯一区别是后者写入数据或会自动开一新行。写完后要记得 用out.close() 关闭输出,用fw.close() 关闭文件。 

完整代码见 Example 4  

Example 1:// FileInputDemo
  // Demonstrates FileInputStream and DataInputStream
  import java.io.*;
  class FileInputDemo {
  public static void main(String args[]) {
  // args.length is equivalent to argc in C
  if (args.length == 1) {
  try {
  // Open the file that is the first command line parameter
  FileInputStream fstream = new FileInputStream(args[0]);
  // Convert our input stream to a DataInputStream
  DataInputStream in = new DataInputStream(fstream);
  // Continue to read lines while there are still some left to read
  while (in.available() !=0) {
  // Print file line to screen
  System.out.println (in.readLine());
  }
  in.close();
  } catch (Exception e) {
  System.err.println(File input error);
  }
  }
  else
  System.out.println(Invalid parameters);
  }
  }
  Example 2:
  // FileOutputDemo
  // Demonstration of FileOutputStream and PrintStream classes
  import java.io.*;
  class FileOutputDemo
  {
  public static void main(String args[]) {
  FileOutputStream out; // declare a file output object
  PrintStream p; // declare a print stream object
  try {
  // connected to myfile.txt
  out = new FileOutputStream(myfile.txt);
  // Connect print stream to the output stream
  p = new PrintStream( out );
  p.println (This is written to a file);
  p.close();
  } catch (Exception e) {
  System.err.println (Error writing to file);
  }
  }
  }
  Example 3:
  // FileReadTest.java
  // User FileReader in JDK1.1 to read a file
  import java.io.*;
  class FileReadTest {
  public static void main (String[] args) {
  FileReadTest t = new FileReadTest();
  t.readMyFile();
  }
  void readMyFile() {
  String record = null;
  int recCount = 0;
  try {
  FileReader fr = new FileReader(mydata.txt);
  BufferedReader br = new BufferedReader(fr);
  record = new String();
  while ((record = br.readLine()) != null) {
  recCount++;
  System.out.println(recCount + : + record);
  }
  br.close();
  fr.close();
  } catch (IOException e) {
  System.out.println(Uh oh, got an IOException error!);
  e.printStackTrace();
  }
  }
  }

  Example 4:

 // FileWriteTest.java
  // User FileWriter in JDK1.1 to writer a file
  import java.io.*;
  class FileWriteTest {
  public static void main (String[] args) {
  FileWriteTest t = new FileWriteTest();
  t.WriteMyFile();
  }
  void WriteMyFile() {
  try {
  FileWriter fw = new FileWriter(mydata.txt);
  PrintWriter out = new PrintWriter(fw);
  out.print(“hi,this will be wirte into the file!”);
  out.close();
  fw.close();
  } catch (IOException e) {
  System.out.println(Uh oh, got an IOException error!);
  e.printStackTrace();
  }
  }
  }

抱歉!评论已关闭.