写一段效率超高的文件拷贝代码
时间: 2023-09-12 10:05:30 浏览: 65
### 回答1:
以下是一段效率超高的文件拷贝代码:
```
#include <stdio.h>
int main() {
FILE *source, *destination;
char buffer[4096];
size_t bytes_read;
source = fopen("source_file.txt", "rb");
if (source == NULL) {
printf("Unable to open source file.\n");
return 1;
}
destination = fopen("destination_file.txt", "wb");
if (destination == NULL) {
printf("Unable to create destination file.\n");
return 1;
}
while ((bytes_read = fread(buffer, 1, sizeof(buffer), source)) > ) {
fwrite(buffer, 1, bytes_read, destination);
}
fclose(source);
fclose(destination);
printf("File copied successfully.\n");
return ;
}
```
### 回答2:
以下是一个效率超高的文件拷贝代码示例:
```python
import shutil
import os
import time
def copy_file(source, destination):
start_time = time.time()
if os.path.isdir(source):
shutil.copytree(source, destination)
else:
shutil.copy2(source, destination)
end_time = time.time()
duration = end_time - start_time
print(f"文件拷贝完成,用时 {duration} 秒")
source_file = "path/to/source/file.ext"
destination_file = "path/to/destination/file.ext"
copy_file(source_file, destination_file)
```
这个代码使用了`shutil`库提供的`copy2`和`copytree`函数,这两个函数都是高效的文件拷贝方法。`copy2`用于拷贝单个文件,而`copytree`用于拷贝整个文件夹。
代码中使用了`os.path.isdir`函数来判断源文件是否是文件夹。如果是文件夹,则调用`copytree`函数进行拷贝,否则使用`copy2`函数进行拷贝。
代码还使用了`time`模块来计算拷贝文件所用的时间,并在拷贝完成后打印出来。
你只需要将`source_file`和`destination_file`变量的值替换为你实际的源文件和目标文件的路径即可使用这段高效的文件拷贝代码。
### 回答3:
以下是一个效率较高的文件拷贝代码的例子:
```python
import shutil
import os
import time
def copy_file(source_dir, target_dir):
if not os.path.exists(target_dir):
os.makedirs(target_dir)
file_list = os.listdir(source_dir)
for file_name in file_list:
source_file = os.path.join(source_dir, file_name)
target_file = os.path.join(target_dir, file_name)
start_time = time.time()
shutil.copy2(source_file, target_file)
end_time = time.time()
execution_time = end_time - start_time
print(f"已拷贝文件: {file_name} - 用时: {execution_time} 秒")
source_directory = "/path/to/source_directory" # 设置源目录
target_directory = "/path/to/target_directory" # 设置目标目录
copy_file(source_directory, target_directory)
```
该代码使用了`os.makedirs()`函数来创建目标目录(如果不存在),并利用`os.listdir()`函数获取源目录下的文件列表。之后,使用`shutil.copy2()`函数将源目录中的文件复制到目标目录中。
在每次拷贝文件之前,代码使用`time.time()`函数获取当前时间作为开始时间。在拷贝完成后,再次使用`time.time()`函数获取当前时间作为结束时间。计算时间差值即可得到该文件的拷贝耗时。最后,代码打印出每个文件的名称和拷贝所用的时间。
这种实现方式的优点在于它利用了`shutil.copy2()`函数,该函数既能够复制文件,还能够保留文件的元数据(例如创建时间和修改时间)。这样可以确保拷贝后的文件与原文件保持一致。同时,利用时间差值计算文件的拷贝耗时,可以提供一定的监控信息。
请根据实际需要修改源目录和目标目录的路径,然后运行代码即可实现高效的文件拷贝。