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

资讯 驱动中国 sevenleaf 2,200 次阅读 0 条评论
分享 Q

      对于初学者来讲,Java对文件的读写也许会感动很晕乎,因为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();
     }
}

 

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友