【Java习题】上一题的优化

来源:互联网 发布:如何申请淘宝号 编辑:程序博客网 时间:2024/06/06 06:56
题目见上一篇博客

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.util.Scanner;
import org.junit.Test;
public class IO {
 /**
  * 实现文件复制
  * @throws IOException
  */
 @Test
 public void test1() throws IOException{
  Scanner scanner = new Scanner(System.in);
  System.out.println("请输入您要复制的文件所在的全路径:");
  String filePath = scanner.next();
  System.out.println("请输入您要复制到的目标路径:");
  String targetPath = scanner.next();
  File f = new File(filePath);//源文件对象
  File target = null;//目标文件对象
  if(targetPath.endsWith("\\")||targetPath.endsWith("/")){
   target = new File(targetPath+"copy_"+f.getName());
  }else{
   target = new File(targetPath+File.separator+"copy_"+f.getName());
  }
  if(target!=null&&target.exists()){
   target.delete();
  }
  //判断文件是否存在
  if(!f.exists()){
   System.out.println("对不起,您要复制的文件不存在!");
   return;
  }
  //判断文件的类型
  if(f.getName().endsWith(".txt")){
   //使用字符流复制
   BufferedReader br = new BufferedReader(new FileReader(f));
   BufferedWriter bw = new BufferedWriter(new FileWriter(target));
   char []  buff = new char[1024];
   int len=0 ;
   while((len = br.read(buff))!=-1){
    bw.write(buff,0,len);
   }
   bw.close();
   br.close();
   System.out.println("文件复制完成!复制的文件绝对路径为:"+target.getAbsolutePath());
   
   
   
  }else{
   //使用字节流复制
   BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
   BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(target));
   byte [] buff = new byte[1024];
   int len =0;
   while((len = bis.read(buff))!=-1){
    bos.write(buff, 0, len);
   }
   bos.close();
   bis.close();
   System.out.println("文件复制完成!复制的文件绝对路径为:"+target.getAbsolutePath());
  }
 }