Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
本文涉及了FileReader/FileWriter、BufferedReader/BufferedWriter进行读写。
package com.io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFileSummary {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String sourceFile,targetFile;
sourceFile = "Sample_input_network.txt";
targetFile = "copyFile.txt";
//test 5 methods
//copyMethod1(sourceFile,targetFile);
//copyMethod2(sourceFile,targetFile);
//copyMethod3(sourceFile,targetFile);
//copyMethod4(sourceFile,targetFile);
copyMethod5(sourceFile,targetFile);
}
//基本流一次读写一个字符
public static void copyMethod1(String sourceFile, String targetFile) throws IOException {
FileReader fr = new FileReader(sourceFile);
FileWriter fw = new FileWriter(targetFile);
int ch;
while((ch=fr.read())!=-1) {
fw.write((char)ch);
}
//free
fw.close();
fr.close();
}
//基本流一次读写一个字符数组
public static void copyMethod2(String sourceFile, String targetFile) throws IOException {
FileReader fr = new FileReader(sourceFile);
FileWriter fw = new FileWriter(targetFile);
char[] chs = new char[1024];
int len;
while((len=fr.read(chs))!=-1) {
fw.write(chs, 0, len);
}
//free
fw.close();
fr.close();
}
//缓冲流一次读写一个字符
public static void copyMethod3(String sourceFile, String targetFile) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(sourceFile));
BufferedWriter bw = new BufferedWriter(new FileWriter(targetFile));
int ch;
while((ch= br.read())!=-1) {
bw.write(ch);
}
bw.close();
br.close();
}
//缓冲流一次读写一个数组
public static void copyMethod4(String sourceFile, String targetFile) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(sourceFile));
BufferedWriter bw = new BufferedWriter(new FileWriter(targetFile));
char[] chs = new char[1024];
int len;
while((len = br.read(chs))!=-1) {
bw.write(chs,0,len);
}
bw.close();
br.close();
}
//缓冲流一次读写一个字符串
public static void copyMethod5(String sourceFile, String targetFile) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(sourceFile));
BufferedWriter bw = new BufferedWriter(new FileWriter(targetFile));
String line;
while((line = br.readLine())!=null) {
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
bw.close();
}
}