Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

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

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  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。

  -------------------------------- following is the source code of examples------------------------------

  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();
}
} 
} 


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:用Java编写Socket客户机端程序   下一篇:和luster一起学习java编程(1)

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章