文本的复制和PrintWriter

一.关于字节流的四种复制

   1. method1(file1,file2); //单个字节复制
   2.method2(file1,file2);//数组个字节复制,效率通常是单字节复制的1024倍
   3.method3(file1,file2);//高效类单字节复制
   4.method4(file1,file2);//高效类字节数组复制,效率最高
package FileInputOutputStream.CopyTwo;

import java.io.*;

public class CopyFour {
    public static void main(String[] args) throws IOException {
        File file1=new File("C:\\Users\\86159\\Desktop\\untitled\\src\\FileInputOutputStream\\CopyTwo\\Hello.txt");
        File file2=new File("C:\\Users\\86159\\Desktop\\untitled\\src\\FileInputOutputStream\\CopyTwo\\World.txt");

        //method1(file1,file2); //单个字节复制
       // method2(file1,file2);//数组个字节复制,效率通常是单字节复制的1024倍
        //method3(file1,file2);//高效类单字节复制
        method4(file1,file2);//高效类字节数组复制,效率最高
    }

    public static void method1(File file1,File file2) throws IOException {
        FileInputStream inputStream=new FileInputStream(file1);
        FileOutputStream outputStream=new FileOutputStream(file2);
        int by;
        while((by=inputStream.read())!=-1){
            outputStream.write(by);
        }
        inputStream.close();
        outputStream.close();
    }
    public static void method2(File file1, File file2) throws IOException {
        FileInputStream inputStream=new FileInputStream(file1);
        FileOutputStream outputStream=new FileOutputStream(file2);
        byte[] bytes=new byte[1024];
        int len=0;
        while((len=inputStream.read(bytes))!=-1){
            outputStream.write(bytes,0,len);   //必须是0-len
        }
        inputStream.close();
        outputStream.close();
    }
    public static void method3(File file1, File file2) throws IOException {
        BufferedInputStream inputStream=new BufferedInputStream(new FileInputStream(file1));
        BufferedOutputStream outputStream=new BufferedOutputStream(new FileOutputStream(file2));

        int len=0;
        while((len=inputStream.read())!=-1){
            outputStream.write(len);   //必须是0-len
        }
        inputStream.close();
        outputStream.close();
    }
    public static void method4(File file1, File file2) throws IOException {
        BufferedInputStream inputStream=new BufferedInputStream(new FileInputStream(file1));
        BufferedOutputStream outputStream=new BufferedOutputStream(new FileOutputStream(file2));
        byte[] bytes=new byte[1024];
        int len=0;
        while((len=inputStream.read(bytes))!=-1){
            outputStream.write(bytes,0,len);   //必须是0-len
        }
        inputStream.close();
        outputStream.close();
    }

}

字符流无较大差别(只举一个):

public static void method(File file1, File file2) throws IOException { //字符缓冲区一次读写一个字符
        BufferedReader inputStream=new BufferedReader(new FileReader(file1));
        BufferedWriter outputStream=new BufferedWriter(new FileWriter(file2));
        char[] bytes=new char[1024];
        int len=0;
        while((len=inputStream.read(bytes))!=-1) {outputStream.write(bytes, 0, len);}   //必须是0-len
        inputStream.close();
        outputStream.close();
    }
   

二.打印流

1.字节打印流:PrintOutputStream
2.字符打印流:PrintWriter
3.通过打印流的方法来复制文本,具体解析我在代码中解释,如下:

package IODemo.PrintWriterDemo.DemoOne;

import java.io.*;

//PrinterOutputStream 为标准字符输入流
//PrinterWriter 为标准字符输入流
public class Demo {
 public static void main(String[] args) {
     File file=new File("C:\\Users\\86159\\Desktop\\untitled\\src\\IODemo\\PrintWriterDemo\\DemoOne\\heihei.txt");
     File file2=new File("C:\\Users\\86159\\Desktop\\untitled\\src\\IODemo\\PrintWriterDemo\\DemoOne\\heiheiCopy.txt");
     PrintWriter pw=null;
     try {
         pw=new PrintWriter(file);
    pw.println("liubi");
    //其实等价于
         // bw.write();      (BufferedWriter bw)
         // bw.newLian()
         // bw.flush()
    pw.println(100);
    pw.print("haha");
     } catch (FileNotFoundException e) {

         System.out.println("找不到该文件");

     }finally {
         pw.close();//要关闭才能打印
     }

     BufferedReader br=null;
     try {
          br=new BufferedReader(new FileReader(file));
         String str=null;

         {
             PrintWriter pw2=new PrintWriter(file2);
             try {
                 while ((str= br.readLine())!=null){
                     pw2.println(str);
                 }

             } catch (IOException e) {
                 e.printStackTrace();
             }finally{
                 pw2.close();
             }
         }
     } catch (FileNotFoundException e) {
         e.printStackTrace();
     }finally {
         if(br!=null)
         try {
             br.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }


 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值