下面是使用代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class IO {
public static void main(String[] args) throws Exception{
long time1=System.currentTimeMillis();
copy2byte("F:/TEST.txt", "ziFu1.txt");
System.out.println("用字節流輸入該文件耗時為="+(System.currentTimeMillis()-time1));
time1=System.currentTimeMillis();
copy2byteBuffer("F:/TEST.txt", "ziFu2.txt");
System.out.println("用字節Buffer流輸入該文件耗時為="+(System.currentTimeMillis()-time1));
// long time1=System.currentTimeMillis();
// copy2Character("F:/TEST.txt", "zifu1.txt");
// System.out.println("用子符流輸入該文件耗時為="+(System.currentTimeMillis()-time1));
// time1=System.currentTimeMillis();
// copy2byteBuffer("F:/TEST.txt", "zifu2.txt");
// System.out.println("用字符Buffer流輸入該文件耗時為="+(System.currentTimeMillis()-time1));
}
/**
* 用字节流进行文件的读取与写入
* @param name1 源文件地址+源文件名
* @param name2 存在E盘E:/FileCreate/ 下的文件名
*/
private static void copy2byte(String name1,String name2) {
InputStream is=null;
OutputStream os=null;
File fileIN=new File("E:/FileCreate/");
File file=new File("E:/FileCreate/"+name2);
File fileYuan=new File(name1);
if (!fileIN.exists()) {
fileIN.mkdirs();
}
try {
is=new FileInputStream(fileYuan);
os=new FileOutputStream(file);
byte[]b=new byte[102400];
int len=0;
while ((len=is.read(b))!=-1) {
os.write(b, 0, len);
// System.out.println("寫入的額長度="+len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if (is!=null) {
is.close();
}
if (os!=null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 用字节缓冲流进行文件的读取与写入。
* @param name1
* @param name2
*/
private static void copy2byteBuffer(String name1,String name2) {
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
File fileIN=new File("E:/FileCreate/");
File file=new File("E:/FileCreate/"+name2);
File fileYuan=new File(name1);
if (!fileIN.exists()) {
fileIN.mkdirs();
}
try {
bis=new BufferedInputStream(new FileInputStream(fileYuan));
bos=new BufferedOutputStream(new FileOutputStream(file));
byte[]b=new byte[102400];
int len=0;
while ((len=bis.read(b))!=-1) {
bos.write(b, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if (bis!=null) {
bis.close();
}
if (bos!=null) {
bos.close();
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
/**
* 用字符流进行文件的读取与写入。
* @param name1
* @param name2
*/
private static void copy2Character(String name1,String name2) throws Exception{
File fileIN=new File("E:/FileCreate/");
if (!fileIN.exists()) {
fileIN.mkdirs();
}
FileReader fr=new FileReader(new File(name1));
FileWriter fw=new FileWriter(new File("E:/FileCreate/"+name2));
char[]cbuf=new char[102400];
int len=0;
while ((len=fr.read(cbuf))!=-1) {
fw.write(cbuf, 0, len);
}
fr.close();
fw.close();
}
/**
* 用字符Buffer流进行文件的读取与写入。
* @param name1
* @param name2
*/
private static void copy2CharacterBuffer(String name1,String name2) throws Exception{
File fileIN=new File("E:/FileCreate/");
if (!fileIN.exists()) {
fileIN.mkdirs();
}
FileReader fr=new FileReader(new File(name1));
BufferedReader bufferR=new BufferedReader(fr);
FileWriter fw=new FileWriter(new File("E:/FileCreate/"+name2));
BufferedWriter bufferW=new BufferedWriter(fw);
// String str=bufferR.readLine();
// bufferW.write(str);
char[]cbuf=new char[102400];
int len=0;
while ((bufferR.read(cbuf))!=-1) {
bufferW.write(cbuf, 0, len);
}
fr.close();
fw.close();
}
}