实例分析:例1:从第一个命令行参数代表的文件中读字符,然后写入第二个参数代表的文件。

2014-11-24 07:28:29 · 作者: · 浏览: 2

问题分析

本题中需要从文件读,写数据,需要使用到与文件有关的流FileReader/FileWriter。

可以通过运行时参数提供文件的名称。

使用带有Buffer功能的流

为了提高读写数据的效率,可以使用带有buffer功能的流完成文件读写,并且可以以行为单位读写数据。

使用类BufferedReader,BufferedWriter

I/O流的链

在程序中很少使用单独一个流对象,实际做法是将几个流对象串联起来处共同理数据。这样做会提高程序的效率。www.2cto.com

数据源-> FileInputStream -> BufferedInputStream -> DataInputStream -> 程序

数据源<- DataOutputStream <- BufferedOutputStream <- FileOutputStream <-程序

编写代码

[java]
import java.io.*;
public class TestBufferedStreams {
public static void main(String[] args) {
try {
FileReader input = new FileReader(args[0]);
BufferedReader bufInput = new BufferedReader(input);
FileWriter output = new FileWriter(args[1]);
BufferedWriter bufOutput = new BufferedWriter(output);
String line = bufInput.readLine();

while (line != null) {
bufOutput.write(line, 0, line.length());
bufOutput.newLine();
line = bufInput.readLine();
}

bufInput.close();
bufOutput.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
public class TestBufferedStreams {
public static void main(String[] args) {
try {
FileReader input = new FileReader(args[0]);
BufferedReader bufInput = new BufferedReader(input);
FileWriter output = new FileWriter(args[1]);
BufferedWriter bufOutput = new BufferedWriter(output);
String line = bufInput.readLine();

while (line != null) {
bufOutput.write(line, 0, line.length());
bufOutput.newLine();
line = bufInput.readLine();
}

bufInput.close();
bufOutput.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

编译运行

javac TestBufferedStreams.java

java TestBufferedStreams user.bat userbak.bat

摘自 Java教程