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用时最短。
使用字节流,字符流FileWriter和BufferedWriter通过复制同一文件,比较它们用时的多少
最新推荐文章于 2023-04-22 11:09:15 发布