java I/O: 以字节形式复制文件

//运行命令带有两个参数,分别为源文件和目标文件的路径

//功能:将源文件的内容写入目标文件 

import java.io.*;

public class binaryFileCopy {

 /**
  * @param args
  */
 /*public static void main(String[] args) {
  // TODO Auto-generated method stub
       DataInputStream instr;
       DataOutputStream outstr;
      
       try
       {
        instr=new DataInputStream(new BufferedInputStream(new FileInputStream(args[0])));
        outstr=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(args[1])));
        if(args.length!=2)
        {System.out.println("请输入正确文件路径");
        return;}
        try{
         int a;
        while(true)
        {a= instr.readUnsignedByte();
        outstr.write(a);}
        }
        catch(EOFException eof)
        {
         instr.close();
         outstr.close();
         return;
        }
       }
       catch(FileNotFoundException fnfe)
       {
        System.out.println("the File not Found");
       }
       catch(IOException e)//try
       {
     System.out.println("problem copying");  
       }//catch
 }
*/
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
       DataInputStream instr;
       DataOutputStream outstr;
       File in=new File(args[0]);
       File out=new File(args[1]);
       if(args.length!=2)
    {System.out.println("请输入正确文件路径");
    return;}
      
       if(in.exists())
        in.delete();
       else
        try{
         in.createNewFile();
        }
           catch (IOException e)
           {System.out.println(e.getMessage());}
          
       if(out.exists())
        out.delete();
       else
        try{
         out.createNewFile();
        }
           catch (IOException e)
           {System.out.println(e.getMessage());}
      
       try
       {
        instr=new DataInputStream(new BufferedInputStream(new FileInputStream(in)));
        outstr=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(out)));
       
        try{
         int a;
        while(true)
        {a= instr.readUnsignedByte();
        outstr.write(a);}
        }
        catch(EOFException eof)
        {
         instr.close();
         outstr.close();
         return;
        }
       }
   
       catch(IOException e)//try
       {
     System.out.println("problem copying");  
       }//catch
 } 
}

/*心得

FileOutPutStream是OutputStream的子类,可用作二进制数据写入文件,构造函数可以是文件的路径名或一个File类的对象DataOutputStream是OutputStream的子类,可连接到一个FileOutputStream上,中间套接BufferedOutputStream可增加输出效率

DaInPutStream的readUnsignedByte()方法  用于返回此输入流的下一个字节,将它解释为一个无符号的 8 位数字DataOutputStream的write()方法   将指定字节(参数 b 的八个低位)写入基础输出流。如果没有抛出异常,则计数器 written 增加 1。*/

 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值