首页 > 试题广场 >

编写程序实现将一个文件复制到另一个文件中。

[问答题]

编写程序实现将一个文件复制到另一个文件中。

楼上的也叫简洁?
import java.io.File;
import java.nio.file.Files;
public class copy {
public static void main(String[] args)throws Exception{
if (args.length < 2){
System.out.println("请输入正确的参数");
System.exit(1);
}
Files.copy(new File(args[0]).toPath(), new File(args[1]).toPath());
}
}

发表于 2017-08-19 17:53:21 回复(2)
import java.io.* ;
public class Copy{
public static void main(String args[]){
if(args.length!=2){// 判断是否是两个参数
System.out.println("输入的参数不正确。") ;
System.out.println("例:java Copy 源文件路径 目标文件路径") ;
System.exit(1) ;// 系统退出
}
File f1 = new File(args[0]) ;// 源文件的File对象
File f2 = new File(args[1]) ;// 目标文件的File对象
if(!f1.exists()){
System.out.println("源文件不存在!") ;
System.exit(1) ;
}
InputStream input = null ;// 准备好输入流对象,读取源文件
OutputStream out = null ;// 准备好输出流对象,写入目标文件
try{
input = new FileInputStream(f1) ;
}catch(FileNotFoundException e){
e.printStackTrace() ;
}
try{
out = new FileOutputStream(f2) ;
}catch(FileNotFoundException e){
e.printStackTrace() ;
}
if(input!=null && out!=null){// 判断输入或输出是否准备好
int temp = 0 ;
try{
while((temp=input.read())!=-1){// 开始拷贝
out.write(temp) ;// 边读边写
}
System.out.println("拷贝完成!") ;
}catch(IOException e){
e.printStackTrace() ;
System.out.println("拷贝失败!") ;
}
try{
input.close() ;// 关闭
out.close() ;// 关闭
}catch(IOException e){
e.printStackTrace() ;
}
}
}
}
复制命令格式为:java Copy 源文件路径 目标文件路径
采用字节输入输出流,边读边写的方式。
发表于 2017-01-22 13:52:04 回复(0)
/**
    
     * @param oldFile 源文件的绝对路径
     * @param newDir 目标目录
     * @return
true:复制成功    false:复制失败
     */
    public static boolean copyFile(String oldFile,String newDir) {
        boolean flag = false;
        // 需要复制的源文件
        File source = new File(oldFile);
        InputStream input = null;
        OutputStream out = null;
        
        try {
            input = new FileInputStream(source);
            // 创建与源文件同名的目标文件
            out = new FileOutputStream(new File(newDir+"\\"+source.getName()));
             // 设置每次读取的字符数
             byte[] b = new byte[1024];
             int byteRead;
             // 读取源文件内容
             while((byteRead=input.read(b)) > 0) {
                // 将源文件内容写入目标文件
                out.write(b, 0, byteRead);
             }
             flag = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // 关闭流
                input.close();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return flag;    
    }
发表于 2019-03-07 14:41:42 回复(0)
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class CopyFile_FileUtils {
    public static void main(String[] args) throws IOException {
        FileUtils.copyFile(new File("abc.txt"), new File("abc-copy.txt"));
    }
}
发表于 2019-02-20 22:43:33 回复(0)
不知道需不需要考虑特殊的情况 磁盘不足 路径不对 文件正在使用 等等 文件重复等
package cn.edu.jxnu.others; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; public class FileReadToWrite {     public static void main(String[] args) throws IOException {         System.out.println("请依次输入:源文件路径 目标文件路径!");         if(args.length<2){             System.out.println("参数不合法!");             System.exit(0);         }         String path = args[0];         String target = args[1];         String resultString = FileReadToWrite.readFile(path);         FileReadToWrite.writeToFile(target, resultString);     }     public static String readFile(String path) throws IOException {         File file = new File(path);         if(!file.exists()){             System.out.println("源文件不存在!");             System.exit(1);         }         BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "utf-8"));         char[] buf = new char[1024];// 设置一个1024字符的缓冲区         StringBuffer stringBuffer = new StringBuffer();         try {             while (br.read(buf) > 0) {                 stringBuffer.append(buf);             }         } catch (Exception e) {             e.printStackTrace();         }         try {             br.close();         } catch (Exception e) {             e.printStackTrace();         }         return stringBuffer.toString();     }     /**      * @description 复制的路径,和文件字节流      * @param path      * @param bytes      * @throws IOException      */     public static void writeToFile(String path, String result) throws IOException {         File f = new File(path);         PrintWriter outPrintWriter = new PrintWriter(                 new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8")));         outPrintWriter.write(result);         outPrintWriter.flush();// 迫使缓冲区被输出         outPrintWriter.close();     } }

编辑于 2018-02-28 16:46:26 回复(0)
利用NIO代码更简洁
@Test
public void copyFile()throws Exception{
FileInputStream fin=new FileInputStream("a.txt");
FileOutputStream fout =new FileOutputStream("z.txt");
FileChannel inChannel=fin.getChannel();
FileChannel outChannel=fout.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
inChannel.close();
outChannel.close();
fin.close();
fout.close();
}
发表于 2017-08-11 17:11:47 回复(0)
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyDemo { public static void main(String[] args) throws IOException { long start = System.currentTimeMillis(); method1("E:\\CamPlay.exe", "D:\\aaa.exe"); long end = System.currentTimeMillis(); System.out.println("共耗时:" + (end - start) + "毫秒"); } /** * 高效字节流一次读写一个字节数组 * @param srcString 源文件路径 * @param destString 目标文件路径 * @throws IOException */ private static void method1(String srcString, String destString) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcString)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destString)); byte[] bys = new byte[1024]; int len = 0; while ((len = bis.read(bys)) != -1) { bos.write(bys, 0, len); } bis.close(); bos.close(); } }
发表于 2017-04-05 15:56:09 回复(0)