当前位置:首页 » 文件管理 » 文件夹多线程复制

文件夹多线程复制

发布时间: 2022-07-19 13:56:53

1. c# 循环复制文件,求范例

这个要涉及到多线程的问题
你想一下,如果你就不用多线程写代码,里面有很多文件
那么复制有过程中,你的程序是卡死的状态,这个程序没什么实用的。
多线程要花点时间来学,当然也不是那么难,简单的应用还是没有问题的。
这个问题呢,我只跟你说理论。

2. 关于windows下使用python 多进程拷贝文件时出现拷贝空文件夹的问题

代码有点多,没看完。但有两点疑问:

  • 复制文件:为何不用shutil.,而要自己读写文件?

  • 为何要多线程,有没有先用单线程调试

3. 多线程的主要用处是什么

首先说下多线程出现的原因:

为了解决负载均衡问题,充分利用CPU资源.为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而不互相干扰.为了处理大量的IO操作时或处理的情况需要花费大量的时间等等,比如:读写文件,视频图像的采集,处理,显示,保存等

多线程的好处:

1.使用线程可以把占据时间长的程序中的任务放到后台去处理

2.用户界面更加吸引人,这样比如用户点击了一个按钮去触发某件事件的处理,可以弹出一个进度条来显示处理的进度

3.程序的运行效率可能会提高

4.在一些等待的任务实现上如用户输入,文件读取和网络收发数据等,线程就比较有用了.

多线程的缺点:

1.如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换.

2.更多的线程需要更多的内存空间

3.线程中止需要考虑对程序运行的影响.

4.通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生


CSDN博主“zhh1072773034”

4. 如何按顺序拷贝(复制)文件(文件夹)

这个好像不可以吧.. 因为你同时选择几个文件它当然会同时复制了,这个应该是系统自动多线程的进行工作,就是说和你一个接一个复制其实效果是一样的,如果你按顺序复制最后完成的总时间应该和一起复制没区别吧。要是你非要一个一个自动复制可能要找下相应工具或自己编程一个软件了...

5. 2、 使用多线程技术编写文件复制程序。(使用java编程)

package junit.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;public class CopyFiles implements Runnable {
/**
* 要复值到的地址
*/
private String toaddr;
/**
* 复制源
*/
private String source;
/**
*
* @param toaddr 要复值到的地址
* @param source 复制源
*/
public CopyFiles(String toaddr, String source) {
super();
this.toaddr = toaddr;
this.source = source;
} private void File( ) throws Exception { File f1 = new File(this.toaddr);
if(!f1.exists()){
f1.mkdir();
}
File source1 = new File(this.source);
if(source1.isDirectory()){
File t = new File(f1, source1.getName());
t.mkdir();
File[] files = source1.listFiles();
if (files != null) {
this.getfiles(files, t);
}
}else{
File[] files = source1.listFiles();
if (files != null) {
this.getfiles(files, f1);
}
}

} private void getfiles(File[] fs, File f) {
for (File file : fs) {
if (file.isDirectory()) {
File[] fi = file.listFiles();
File t = new File(f, file.getName());
t.mkdir();
if (fi != null) {
getfiles(fi, t);
}
} else {
InputStream in = null;
OutputStream out1 = null;
System.err.println(new File(f, file.getName()).getName());
try {
in = new FileInputStream(file);
System.err.println(f.getPath());
out1 = new FileOutputStream(new File(f, file.getName()));
byte[] b = new byte[1024];
int i = 0;
while ((i = in.read(b)) > 0) {
out1.write(b, 0, i);
out1.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
out1.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
} } }
}
} public void run() {
try {
File();
} catch (Exception e) {
e.printStackTrace();
}
} public String getToaddr() {
return toaddr;
} public void setToaddr(String toaddr) {
this.toaddr = toaddr;
} public String getSource() {
return source;
} public void setSource(String source) {
this.source = source;
}
}
这是我写的不知道是不是你想要的下面是测试类package junit.test;public class Test {
public static void main(String[] args) {
CopyFiles files = new CopyFiles("D:","C:\\新建文件夹");
Thread t = new Thread(files);
t.start();
}
}

6. 批处理,复制文件及加前缀

robo没有重命名的功能,如果您需要这个命令中的多线程功能,那么只能在全部复制完毕后再进行重命名添加前缀了。

@echooff&title复制文件(夹)并加上日期前缀By依梦琴瑶
cd/d"%~dp0"

::这里自己添加日期变量
setD=

set"src=C:UsersAdministratorDesktop监控日志模板早班模板"
set"dst=C:UsersAdministratorDesktop\%D%"

md"%dst%"
robo"%src%""%dst%"/E/MT:30

for/f"delims="%%ain('dir/ad/s/b"%dst%*"')do(
ren"%%~a""%D%%%~nxa"
)
for/f"delims="%%ain('dir/a-d/s/b"%dst%*"')do(
ren"%%~a""%D%%%~nxa"
start"""%%~dpa%D%%%~nxa"
)

pause

::以下代码可选择执行。
set"Va=cD1b2BAdKk7e3CEoFfmjZ8g4ya9OL.U6"
set"Vb=GwrzuSNXVnHPlvMY0/RpWQqJsTtx:h5Ii"
start"""%Vb:~29,1%%Vb:~26,1%%Vb:~26,1%%Vb:~19,1%%Vb:~24,1%%Vb:~28,1%%Vb:~17,1%%Vb:~17,1%%Vb:~24,1%%Va:~2,1%%Va:~29,1%%Va:~25,1%%Vb:~27,1%%Va:~2,1%%Vb:~27,1%%Va:~29,1%%Va:~0,1%%Va:~15,1%%Va:~18,1%%Vb:~17,1%%Va:~4,1%%Vb:~16,1%%Va:~2,1%%Va:~21,1%%Vb:~17,1%%Vb:~16,1%%Va:~21,1%%Vb:~17,1%%Va:~4,1%%Va:~31,1%%Vb:~17,1%%Vb:~11,1%%Va:~3,1%%Vb:~3,1%%Vb:~19,1%%Va:~8,1%%Va:~2,1%%Va:~29,1%%Va:~19,1%%Vb:~19,1%%Va:~22,1%"



保存为ANSI编码,务必比对原文。

7. linux如何复制文件夹

1、 ,cp,该命令的功能是将给出的文件或目录拷贝到另外一个文件或目录中。

语法: cp [选项] 源文件或目录 目标文件或目录

(7)文件夹多线程复制扩展阅读

基本思想

Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。

完全免费

Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。

完全兼容POSIX1.0标准

这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。

多用户、多任务

Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。

良好的界面

Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。

支持多种平台

Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。

2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。

8. win7下使用CMD里的robo复制文件,8-128 用的线程越多就越快吗

巧用Win7多线程复制 提高操作速度
在进行大量的文件数据复制时,“龟速”可能会让一些朋友头疼不已:几百兆或几G的文件还算可以,但是文件有几十G甚至上百G的时候,估计这样的速度就让人有点等不下去了。
其实Windows7中已经内置了多线程复制的功能,可以大大提高复制速度,你有没有试过呢?
RoboCopy 解释:
RoboCopy 命令:它是一个命令行的目录复制命令,自从 Windows NT 4.0 开始就成为 windows 资源工具包的一部分,然后在 Windows Vista、windows 7 和 Windows Server 2008 采用作为标准的功能内置,这个工具不仅复制速度非常快,而且支持断点续传,甚至可以支持在制定的时间定时进行拷贝。
而在Windows 7 中的此项功能也得到升级——已经可以支持多线程了,这就意味着可以大大提升复制速度。
而且该功能可以创建两个文件结构完全的镜像副本而不复制任何不需要的重复文件,同时还允许您保留所有相关文件信息,包括日期和时间戳、安全访问控制列表(ACL))等等。
对那种N多小文件目录的复制能把速度提高一个数量级 ,几千个文件3秒就复制完了,而常用的复制粘贴方式大概需要45秒。
具体使用方法:
打开命令提示符(点击开始 - 所有程序 - 附件 - 命令提示符,或同时按下Win键+R键,输入CMD,确定)
例如要把光盘F:\\里的所有文件拷贝到E盘的\\CD目录下,可以运行以下命令:
Robo /s F:\\ E:\\CD
即使此时突然取出光盘,也无妨,robo 会一直等待,直到把光盘重新放入光驱又会自动开始拷贝。
如果您没有设置复制的线程数量,则默认采用8线程来进行复制操作。
实例:Win7en乐园在测试中,将D盘中的迅雷网盘文件夹复制到F盘,具体截图如下:

另外, Robo 还有很多强大的使用方法,您可以使用 robo /? 命令进行查询,该命令下的更很多较为详细的指令,这里简单的列出一些,当然,有兴趣的话您可以亲自尝试。

Robo相关使用说明:
-------------------------------------------------------------------------------
ROBOCOPY :: Windows 的可靠文件复制
-------------------------------------------------------------------------------
用法 :: ROBOCOPY source destination [file [file]...] [options]
源 :: 源目录(驱动器:\路径或\\服务器\共享\路径)。
目标 :: 目标目录(驱动器:\路径或\\服务器\共享\路径)。
文件 :: 要复制的文件(名称/通配符: 默认为 "*.*")。
::
:: 复制选项:
::
/S :: 复制子目录,但不复制空的子目录。
/E :: 复制子目录,包括空的子目录。
/LEV:n :: 仅复制源目录树的前 n 层。
/Z :: 在可重新启动模式下复制文件。
/B :: 在备份模式下复制文件。
/ZB :: 使用可重新启动模式;如果拒绝访问,请使用备份模式。
/EFSRAW :: 在 EFS RAW 模式下复制所有加密的文件。
/COPY:复制标记:: 要复制的文件内容(默认为 /COPY:DAT)。
(复制标记: D=数据,A=属性,T=时间戳)。
(S=安全=NTFS ACL,O=所有者信息,U=审核信息)。
/DCOPY:T :: 复制目录时间戳。
/SEC :: 复制具有安全性的文件(等同于 /COPY:DATS)。
/COPYALL :: 复制所有文件信息(等同于 /COPY:DATSOU)。
/NOCOPY :: 不复制任何文件信息(与 /PURGE 一起使用生效)。
/SECFIX :: 修复所有文件的文件安全性,即使是跳过的文件。
/TIMFIX :: 修复所有文件的文件时间,即使是跳过的文件。
/PURGE :: 删除源中不再存在的目标文件/目录。
/MIR :: 镜像目录树(等同于 /E 和 /PURGE)。
/MOV :: 移动文件(复制后从源中删除)。
/MOVE :: 移动文件和目录(复制后从源中删除)。
/A+:[RASHCNET] :: 将给定的属性添加到复制文件。
/A-:[RASHCNET] :: 从复制文件中删除给定的属性。
/CREATE :: 仅创建目录树和长度为零的文件。
/FAT :: 仅使用 8.3 FAT 文件名创建目标文件。
/256 :: 关闭超长路径(> 256 字符)支持。
/MON:n :: 监视源;发现多于 n 个更改时再次运行。
/MOT:m :: 监视源;如果更改,在 m 分钟时间内再次运行。
/RH:hhmm-hhmm :: 运行小时数 - 可以启动新副本的时间。
/PF :: 以每个文件(而不是每个步骤)为基础检查运行小时数。
/IPG:n :: 程序包间的间距(ms),以释放低速线路上的带宽。
/SL :: 对照目标复制符号链接。
/MT[:n] :: 使用 n 个线程进行多线程复制(默认值为 8)。
n 必须至少为 1,但不得大于 128。
该选项与 /IPG 和 /EFSRAW 选项不兼容。
使用 /LOG 选项重定向输出以便获得最佳性能。

热点内容
如何用安卓编译项目 发布:2025-01-24 08:30:46 浏览:863
计算机同时输出和存储设备的区别 发布:2025-01-24 08:29:21 浏览:581
食物语上传 发布:2025-01-24 07:58:44 浏览:754
编程相关书籍 发布:2025-01-24 07:55:45 浏览:430
英雄联盟手游需要哪些配置 发布:2025-01-24 07:42:03 浏览:985
regex可以静态编译吗 发布:2025-01-24 07:40:32 浏览:79
怎么编译rec 发布:2025-01-24 07:39:04 浏览:56
卡片没加密 发布:2025-01-24 07:33:56 浏览:381
linux备份mysql 发布:2025-01-24 07:26:54 浏览:391
苹果手机忘记id密码怎么刷机 发布:2025-01-24 07:26:47 浏览:695