精华内容
下载资源
问答
  • java文件复制方法Java copy file is a very common operation. But java.io.File class doesn’t have any shortcut method to copy a file from source to destination. Here we will learn about four different ...

    java文件复制方法

    Java copy file is a very common operation. But java.io.File class doesn’t have any shortcut method to copy a file from source to destination. Here we will learn about four different ways we can copy file in java.

    Java复制文件是非常常见的操作。 但是java.io.File类没有任何快捷方式将文件从源复制到目标。 在这里,我们将学习四种在java中复制文件的方法。

    Java复制文件 (Java Copy File)

    1. Java Copy File – Stream

      Java复制文件–流

    This is the conventional way of file copy in java. Here we create two Files – source and destination. Then we create InputStream from source and write it to the destination file using OutputStream for java copy file operation.

    这是Java中文件复制的常规方式。 在这里,我们创建两个文件-源文件和目标文件。 然后,我们从源创建InputStream并使用OutputStream进行java复制文件操作,将其写入目标文件。

    Here is the method that can be used for java copy file using streams.

    这是可用于使用流的Java复制文件的方法。

    private static void copyFileUsingStream(File source, File dest) throws IOException {
        InputStream is = null;
        OutputStream os = null;
        try {
            is = new FileInputStream(source);
            os = new FileOutputStream(dest);
            byte[] buffer = new byte[1024];
            int length;
            while ((length = is.read(buffer)) > 0) {
                os.write(buffer, 0, length);
            }
        } finally {
            is.close();
            os.close();
        }
    }
    1. Java Copy File – java.nio.channels.FileChannel

      Java复制文件– java.nio.channels.FileChannel

    Java NIO classes were introduced in Java 1.4 and FileChannel can be used to copy file in java. According to transferFrom() method javadoc, this way of copy file is supposed to be faster than using Streams for java copy files.

    Java NIO类是在Java 1.4中引入的,FileChannel可用于在Java中复制文件。 根据transferFrom()方法javadoc,这种复制文件的方式应该比使用Streams进行Java复制文件要快。

    Here is the method that can be used to copy a file using FileChannel.

    这是可以使用FileChannel复制文件的方法。

    private static void copyFileUsingChannel(File source, File dest) throws IOException {
        FileChannel sourceChannel = null;
        FileChannel destChannel = null;
        try {
            sourceChannel = new FileInputStream(source).getChannel();
            destChannel = new FileOutputStream(dest).getChannel();
            destChannel.transferFrom(sourceChannel, 0, sourceChannel.size());
           }finally{
               sourceChannel.close();
               destChannel.close();
       }
    }
    1. Java Copy File – Apache Commons IO FileUtils

      Java复制文件– Apache Commons IO FileUtils

    Apache Commons IO FileUtils.copyFile(File srcFile, File destFile) can be used to copy file in java. If you are already using Apache Commons IO in your project, it makes sense to use this for code simplicity. Internally it uses Java NIO FileChannel, so you can avoid this wrapper method if you are not already using it for other functions.

    Apache Commons IO FileUtilscopyFile(File srcFile,File destFile)可用于在Java中复制文件。 如果您已经在项目中使用Apache Commons IO,则使用它来简化代码是很有意义的。 它在内部使用Java NIO FileChannel,因此如果尚未将其用于其他功能,则可以避免使用该包装器方法。

    Here is the method for using apache commons io for java copy file operation.

    这是将apache commons io用于Java复制文件操作的方法。

    private static void copyFileUsingApacheCommonsIO(File source, File dest) throws IOException {
        FileUtils.copyFile(source, dest);
    }
    1. Java Copy File – Files class

      Java复制文件–文件类

    If you are working on Java 7 or higher, you can use Files class copy() method to copy file in java. It uses File System providers to copy the files.

    如果您使用的是Java 7或更高版本,则可以使用Files类的copy()方法在Java中复制文件。 它使用文件系统提供程序来复制文件。

    private static void copyFileUsingJava7Files(File source, File dest) throws IOException {
        Files.copy(source.toPath(), dest.toPath());
    }

    Now to find out which is the fastest method, I wrote a test class and executed above methods one-by-one for copy file of 1 GB. In each call, I used different files to avoid any benefit to later methods because of caching.

    现在,找出哪种方法最快,我编写了一个测试类,并针对1 GB的副本文件逐个执行了上述方法。 在每个调用中,我都使用了不同的文件,以避免由于缓存而对以后的方法产生任何好处。

    package com.journaldev.files;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.nio.channels.FileChannel;
    import java.nio.file.Files;
    
    import org.apache.commons.io.FileUtils;
    
    public class JavaCopyFile {
    
        public static void main(String[] args) throws InterruptedException, IOException {
            File source = new File("/Users/pankaj/tmp/source.avi");
            File dest = new File("/Users/pankaj/tmp/dest.avi");
    
            //copy file conventional way using Stream
            long start = System.nanoTime();
            copyFileUsingStream(source, dest);
            System.out.println("Time taken by Stream Copy = "+(System.nanoTime()-start));
            
            //copy files using java.nio FileChannel
            source = new File("/Users/pankaj/tmp/sourceChannel.avi");
            dest = new File("/Users/pankaj/tmp/destChannel.avi");
            start = System.nanoTime();
            copyFileUsingChannel(source, dest);
            System.out.println("Time taken by Channel Copy = "+(System.nanoTime()-start));
            
            //copy files using apache commons io
            source = new File("/Users/pankaj/tmp/sourceApache.avi");
            dest = new File("/Users/pankaj/tmp/destApache.avi");
            start = System.nanoTime();
            copyFileUsingApacheCommonsIO(source, dest);
            System.out.println("Time taken by Apache Commons IO Copy = "+(System.nanoTime()-start));
            
            //using Java 7 Files class
            source = new File("/Users/pankaj/tmp/sourceJava7.avi");
            dest = new File("/Users/pankaj/tmp/destJava7.avi");
            start = System.nanoTime();
            copyFileUsingJava7Files(source, dest);
            System.out.println("Time taken by Java7 Files Copy = "+(System.nanoTime()-start));        
        }
    }

    Here is the output of the above program, note that I commented above code to make sure every time only one method is used for java file copy operation.

    这是上面程序的输出,请注意,我注释了上面的代码,以确保每次仅将一种方法用于Java文件复制操作。

    Time taken by Stream Copy = 44582575000
    Time taken by Channel Copy = 104138195000
    Time taken by Apache Commons IO Copy = 108396714000
    Time taken by Java7 Files Copy = 89061578000

    From the output, it’s clear that Stream Copy is the best way to copy File in Java. But it’s a very basic test. If you are working on a performance intensive project, then you should try out different methods for java copy file and note down the timings to figure out the best approach for your project.

    从输出中可以明显看出,Stream Copy是用Java复制File的最佳方法。 但这是一个非常基本的测试。 如果您正在处理一个性能密集型项目,则应尝试使用Java复制文件的不同方法,并记下时间安排,以找到适合您项目的最佳方法。

    You should also play around different ways of java copy files based on your average size of the file.

    您还应该根据文件的平均大小来尝试不同的Java复制文件方式。

    I have created a YouTube video for 4 ways to copy the file in java, you can watch it to learn more.

    我已经创建了一种YouTube视频,提供了4种方法来复制Java文件,您可以观看它以了解更多信息。

    演示地址

    翻译自: https://www.journaldev.com/861/java-copy-file

    java文件复制方法

    展开全文
  • 要求:需要将一个文件(如EM1.mdb)复制...将现有文件复制到新文件,不允许覆盖现有文件 重载 CopyTo(String) 将现有文件复制到新文件,不允许覆盖现有文件。 CopyTo(String, Boolean) 将现有...

    要求:需要将一个文件(如EM1.mdb)复制一份并移动到另外一个目录里,并且复制的那一份名字变为(EM2.mdb)

    主要运用到CopyTo

    CopyTo(String)

    将现有文件复制到新文件,不允许覆盖现有文件

    重载

    CopyTo(String)

    将现有文件复制到新文件,不允许覆盖现有文件。

    CopyTo(String, Boolean)

    将现有文件复制到新文件,允许覆盖现有文件。

    public System.IO.FileInfo CopyTo (string destFileName);

        参数

                   destFileName

       String

                   要复制到的新文件的名称。

    接下来是我的demo:

                string path = @"d:\EM1.txt";
                string path2 = @"d:\云轩\EM2.txt";
                FileInfo fi1 = new FileInfo(path);
                FileInfo fi2 = new FileInfo(path2);
    
                try
                {
                    // Create the source file.
                    // using (FileStream fs = fi1.Create()) { }
                    //Ensure that the target file does not exist.
                    if (File.Exists(path2))
                    {
                        fi2.Delete();
                    }
                    //Copy the file.f
                    fi1.CopyTo(path2);
                    Console.WriteLine("{0} was copied to {1}.", path, path2);
                }
                catch (IOException ioex)
                {
                    Console.WriteLine(ioex.Message);
                }

    首先你要有一份EM1.txt,接下来用我上面的demo,运行,就会在  云轩 这个文件夹下,自动生成EM2.mdb,很快

     

    当然具体的方法得去msdn里面找,里面有详细的demo(借鉴了)

    https://docs.microsoft.com/zh-cn/dotnet/api/system.io.fileinfo.copyto?redirectedfrom=MSDN&view=netframework-4.7.2#System_IO_FileInfo_CopyTo_System_String_System_Boolean_

    展开全文
  • java文件处理(3)——实现文件复制和文件移动

    万次阅读 多人点赞 2018-10-07 17:31:16
    通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件复制(而不是调用windows命令行的内部命令copy)。 通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件移动(而不是调用windows...

    任务要求:

    • 通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件复制(而不是调用windows命令行的内部命令copy)。
    • 通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件移动(而不是调用windows命令行的外部命令move)。

    一.文件复制

    1.介绍InputStream和OutputStream

    InputStream和OutputStream是抽象类,是所有字节输入流和输出流的父类。

    • InputStream(输入流):输入流是用来读入数据的。(读入)
    • OutputStream(输出流):输出流是用来写出数据的。(写出)
    (1)文件输入流——FileInputStream

    FileInputStream 从文件系统中的某个文件中获得输入字节。
    构造方法

    通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。public FileInputStream(File file);
    通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。public FileInputStream(String name);
    (2)文件输出流——FileOutputStream

    文件输出流是用于将数据写入到文件中。
    构造方法

    创建一个向指定 File 对象表示的文件中写入数据的文件输出流public FileOutputStream(File file);
    创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。public FileOutputStream(File file,boolean append);
    创建一个向具有指定名称的文件中写入数据的输出文件流public FileOutputStream(String name);
    创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。public FileOutputStream(String name,boolean append);

    2.进行文件复制

    代码如下:

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    
    class CopyFile
    {
        static void copy(String srcPathStr, String desPathStr)
    	{
            //获取源文件的名称
            String newFileName = srcPathStr.substring(srcPathStr.lastIndexOf("\\")+1); //目标文件地址
            System.out.println("源文件:"+newFileName);
            desPathStr = desPathStr + File.separator + newFileName; //源文件地址
            System.out.println("目标文件地址:"+desPathStr);
            try
    		{
                 FileInputStream fis = new FileInputStream(srcPathStr);//创建输入流对象
                 FileOutputStream fos = new FileOutputStream(desPathStr); //创建输出流对象               
                 byte datas[] = new byte[1024*8];//创建搬运工具
                 int len = 0;//创建长度   
                 while((len = fis.read(datas))!=-1)//循环读取数据
    			{
    				fos.write(datas,0,len);
                } 
                    fis.close();//释放资源
                    fis.close();//释放资源
            }
    			catch (Exception e)
    			{
                    e.printStackTrace();
                }
        }
        public static void main(String[] args)
    	{     
            String srcPathStr = "E:\\java task\\zhl.txt"; //源文件地址
    		String desPathStr = "E:\\java task\\zhlll"; //目标文件地址
            copy(srcPathStr, desPathStr);//将E:\\java task\\zhl.txt文件拷贝到E:\\java task\\zhlll
        } 
    }
    

    结果如下:
    在这里插入图片描述

    二.文件移动

    1.renameTo 的使用

    (1)重命名文件

            File oldName = new File("E:\\java task\\zh.txt");
            File newName = new File("E:\\java task\\zhl.txt");
            System.out.println(oldName.renameTo(newName));//zh.txt改为zhl.txt
    

    (2)进行文件的移动操作

            File oldName = new File("E:\\java task\\zhl.txt");
            File newName = new File("E:\\java task\\zhlll\\zhl.txt");
            System.out.println(oldName.renameTo(newName));//E:\\java task\\zhl.txt移动至E:\\java task\\zhlll
    

    2.实现文件移动

    代码如下:

    import java.io.File;
    class MoveFile
    {
    	public static void main(String[] agrs)
    	{
    		try
    		{
    			File file=new File("E:\\java task\\zhl.txt"); //源文件
    			if (file.renameTo(new File("E:\\java task\\zhlll\\"+file.getName()))) //源文件移动至目标文件目录
    			{
    				System.out.println("File is moved successful!");//输出移动成功
    			}
    			else
    			{
    				System.out.println("File is failed to move !");//输出移动失败
    			}
    		}
    		catch (Exception e)
    		{
    			e.printStackTrace();
    		}
    	}
    }
    

    结果如下:
    在这里插入图片描述

    展开全文
  • Qt 文件复制

    万次阅读 2018-08-21 11:08:13
    //newreportpath 将要复制到的新文件完整路径 QString name = fi.fileName(); //获取文件名 //判断文件按是否存在,存在则删除 if(fi.exists()){ dir.remove(name); } if(...
    QFileInfo fi(newreportpath);//newreportpath 将要复制到的新文件完整路径
    
    
        QString name = fi.fileName();  //获取文件名
        //判断文件按是否存在,存在则删除
        if(fi.exists()){
            dir.remove(name);
        }  
        if(QFile::copy(reportpath,newreportpath)){  //将文件复制到新的文件路径下
            qDebug()<<QStringLiteral("复制成功");
            return true;
        }else

                     qDebug()<<QStringLiteral("复制失败");

    这样复制可以将文件名重命名,也可以不重命名。

    例:newreportpath = "D:\book\c++.pdf"

            reportpath = "D:\111.pdf"

    将D盘下的111.pdf文件复制到book文件夹下,并改名为c++;

    展开全文
  • 本人是想在Linux 上安装JDK ,当从官网上下载完成jdk 8 时,...对于出现的其他的文件复制报错应该是有效的。 首先是先打开terminal 运行命令 sudonautilus 。 就可以打开一个具有管理员权限的文件管理器啦。 然...
  • C语言实现文件复制的两种方法

    千次阅读 2020-01-26 14:49:25
    //循环读取源文件内容到s中,再写到目标文件中 while ( ( n = fread ( s , 1 , sizeof ( s ) , fp ) ) > 0 ) { fwrite ( s , 1 , n , fp1 ) ; } fclose ( fp ) ; fclose ( fp1 ) ; ...
  • 解决直接移动、删除文件无权限的问题!!!
  • ubuntu文件复制权限问题

    千次阅读 2018-09-22 16:46:32
    在ubuntu系统下,想将一个文件复制到/usr/share/themes文件夹下,但是复制出错,权限不够。 解决: 提高用户的权限。 ctrl+alt+t 打开终端 输入命令: sudo chmod 777 /usr/share/themes 补充: sudo chmod 600 ...
  • VBA之跨文件复制拷贝

    千次阅读 2019-06-23 09:34:01
    我们在使用VBA的时候,如果想对文件里面的内容进行跨文件拷贝,我需要使用到一种方法,首先对我们需要拷贝的文件,进行路径写死进行访问,如下代码示例: a = "xxx.xlsm" Workbooks(a).Activate Workbooks(a)...
  • 4、在打开的映射虚拟磁盘,选择要复制到虚拟机里的哪个盘(1-c盘,2-d盘),记得取消勾选“以只读模式打开文件”,然后点击确定。(页面里有个驱动器就是待会确定了,会跳出的盘,但有的人也不会跳出该盘) 5、点击...
  • 每次打包后都需要手动复制文件到现有项目中,讨厌得很,故查阅后 const path = require("path"); const CopyPlugin = require('copy-webpack-plugin'); const entryArr = [ ] module.exports = { mode: ...
  • 【C语言】之实现文件复制功能

    万次阅读 多人点赞 2018-03-19 18:35:58
    * 功能描述:实现文件复制功能-linux平台下 * 编写人:王廷云 * 编写日期:2018-1-12 */ #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define BUFFSIZE 1024 // 缓冲区大小 /* 程序...
  • 将window的文件复制到Linux中的方法

    千次阅读 2020-10-16 09:53:13
    将window的文件复制到Linux中一、将VMware升级到15以上复制方法三级目录 一、将VMware升级到15以上 如果你已经是15版本以上,就可以跳过此步骤; 不是的话,也不要着急,小编准备了15以上版本,需要的话可以去网盘...
  • VM虚拟机在linux系统下如何实现文件复制粘贴

    万次阅读 多人点赞 2019-06-11 20:35:31
    安装VMware Tools 2、此时出现VM的安装包,解压...3、把安装包复制到opt的目录下 4、这里用命令进行解压 1、先进入opt目录,查看目录下的内容 2、解压命令,其实后面的压缩包只需要输入前面的VM,然后再按Tab键...
  • 文件复制到FTP服务器时发生错误。请检查是否有权限将文件放到该 服务器上。 这个只要取消勾选 解决方案: 取消对所有收发的路径和文件名采用UTF-8编码。操作步骤为域->限制和设置->FTP命令设置->...
  • 假设,我想把Matplotlib文件复制出去,那怎么找到该文件夹呢 首先,打开Jupyter notebook,在Matplotlib文件夹里,创建一个python文件 其次,输入代码输出文件存储路径 import os print(os.path.abspath('.')) ...
  • C++实现文件复制

    千次阅读 2018-03-22 09:12:49
    这一小节主要是文件的读写操作,头文件fstream,其中读和写主要对应ifstream和ofstream,打开文件夹时,主要有以下几种模式:ios::in 打开一个可读文件ios::out 打开一个可写文件ios::binary 以二进制的形式打开...
  • 实现Windows文件复制到vm虚拟机

    千次阅读 2020-03-21 19:49:43
    实现Windows文件复制到vm虚拟机 听说可以直接把Windows里的文件拖到虚拟机里??纳尼??(⊙o⊙)? 居然有这么骚的操作,那我一定得试试: 先打开虚拟机,切换到我的目标文件夹,然后找到想要复制得文件,鼠标左键点...
  • 二、vi编辑器从一个文件复制到另一个文件 1.先打开这两个文件:vi a1.log a2.log 2.:set number 显示行号 3.:100,200y(复制100行~200行的内容) 4.:n 切换到第二个文件 5.p(粘贴即可),将光标移到需要复制的地方.....
  • 用WindowsAPI实现文件复制功能

    千次阅读 2018-04-08 17:54:44
    用WindowsAPI实现文件复制功能 1. c代码 注释也在里面 文件名为 copyfile.c 运行出来的exe为 copyfile.exe #include &lt;windows.h&gt; #include &lt;stdio.h&gt; #define ...
  • 版权声明:以下代码均由小任一人码成,转载请注明出处。 源码 import java.io.File; import java.io.FileInputStream;...//file读和写实现复制文件 public static void main(String[] args) throws E...
  • linux cp 一个文件复制多份

    千次阅读 2019-05-31 10:06:16
    linux cp 一个文件复制多份 要问我这样做有什么用呢? 比如说现在我要做的对自己的多线程并发迁移数据功能进行测试。 直接使用cp命令与xargs命令结合 echo '3 4 5 6 7' | xargs -n 1 cp 1 把文件1复制5份 ,名字...
  • 从windows拖拽文件到ubuntu发现拖不进去 查找了网上资料安装vm tool 安装基本信息: 电脑系统:win10 VMware 15.0 ubuntu 19 按照以下步骤: Player§->文件->首选项:
  • cp 用于复制文件或目录。 参数说明: -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式...
  • windows 编写.bat脚本下实现文件复制

    千次阅读 2019-09-27 17:48:44
    需要将指定目录下的.txt文件复制到指定目录中,复制完毕后删除文件 二、实现 @echo off echo "复制考勤数据........." echo. xcopy E:\checkindata\a001\*.txt Z:\a001\ /s /e /c /y /h /r --复制到指定目录 ...
  • linux下文件复制、重命名

    万次阅读 2019-02-01 15:45:36
    1、linux下的文件复制 格式:cp [源文件] [目标地址] 示例:cp make_imagenet_mean.sh /home/yanghuiyu/make_cmake/caffe/examples/myExample   2、重命名 格式:mv [源文件] [目标文件] 示例:将文件...
  • cmd copy命令 文件复制【转】

    千次阅读 2018-12-25 15:53:00
    copy,中文含义为“复制”,一个很容易见名知意的命令,它的作用是...假设,你需要把d:\test\test.txt这个文件复制到D盘根目录下,那么,使用 copy d:\test\test.txt d:\ 就可以轻易办到。 当然,这是最简单的情...
  • 将本地文件复制到Linux系统盘中

    千次阅读 2019-08-21 00:58:02
    几乎所有的视频,老师都已经把redis的安装包提前放在了Linux系统中,开始看视频的我一脸闷逼,本来打算用filezilla那个软件通过ftp协议把安装包传过去,最后想了想算了,U盘多方便的,接下来我就用u盘把文件拷到...
  • System.out.println("复制文件:" + "\n" + "源路径:" + url1 + "\n" + "目标路径:" + url2); while ((n = in.read(buff)) != -1) { out.write(buff, 0, n); } out.flush(); in.close(); out.close(); ...
  • 1. 文件复制:cp命令,即copy 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中  语法:cp [选项] 源文件或目录 目标文件或目录 常用选项: - a 该选项通常在拷贝目录时使用。它保留链接、文件属性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,096,853
精华内容 838,741
关键字:

文件复制