package testIO;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
public class testWriter {
static File f=new File("C:\\Users\\Administrator\\Desktop\\lhni.txt");//需要被复制的文件
public static void main(String[] args) throws IOException {
testbyte();
testchar();
testFileWriter();
}
//字节复制的方法
public static void testbyte() throws IOException{//使用字节流FileInputStream,FileOutputStream来实现文件的复制
InputStream st=new FileInputStream(f);
File f1=new File(f.getParent(), f.getName().substring(f.getName().lastIndexOf("i")));
OutputStream st1=new FileOutputStream(f1);
int count=-1;
byte[] b=new byte[10];
//通过在复制前获得系统的时间
long start=System.currentTimeMillis();
while((count=st.read(b))!=-1){
st1.write(b, 0, count);
}
st.close();
st1.close();
//在复制完成之后在获取一次系统的时间
long end=System.currentTimeMillis();
long cha=end-start;
//两次时间相减得到复制文件的时间
System.out.println("This is OutputStream time:"+" "+cha);
}
//字符复制的方法
public static void testchar() throws IOException{//使用字符流复制文件
Reader r=new InputStreamReader(new FileInputStream(f));
//将复制文件的父目录与源文件设置为相同
File f2=new File(f.getParent(), f.getName().substring(f.getName().lastIndexOf("n")));
Writer w=new OutputStreamWriter(new FileOutputStream(f2));
BufferedReader b1=new BufferedReader(r);
BufferedWriter w1=new BufferedWriter(w);
b1.readLine();
int count=-1;
char[] b=new char[10];
//b1.read(b);
long start=System.currentTimeMillis();
while((count=b1.read(b))!=-1){
w1.write(b, 0, count);
w1.flush();
}
b1.close();
w1.close();
long end=System.currentTimeMillis();
long cha1=end-start;
System.out.println("This is BufferedWriter time:"+" "+cha1);
}
public static void testFileWriter() throws IOException{
//使用字符流的FileReader和FileWriter来实现复制文件
// Reader d=new InputStreamReader(new FileInputStream(f));
FileReader r1=new FileReader(f);
File f1=new File(f.getParent(),f.getName().substring(f.getName().lastIndexOf("h")));
FileWriter w1=new FileWriter(f1);
char[] c=new char[10];
int count=-1;
//通过在复制前获得系统的时间
long start=System.currentTimeMillis();//获取系统的时间
while((count=r1.read(c))!=-1){//读取文件内容
w1.write(c, 0, count);
// w1.flush();
}
r1.close();
w1.close();
//在复制完成之后在获取一次系统的时间
long end=System.currentTimeMillis();
//两次时间相减得到复制文件的时间
long cha2=end-start;
System.out.println("This is FileWriter time:"+" "+cha2);
}
}
运行后的截图:
通过两次获取系统的时间比较复制文件用时的多少,结果发现FileWriter用时最短。
转载请注明原文地址: https://ju.6miu.com/read-669462.html