在Linux环境下,使用C++进行文件拷贝可以通过多种方式实现,以下是一些基础概念和相关信息:
open()
, read()
, write()
, close()
等,这些是操作系统提供的底层接口,用于文件操作。fopen()
, fread()
, fwrite()
, fclose()
等,这些是C++标准库提供的函数,用于文件操作,相对系统调用更高级。open()
, read()
, write()
, close()
等系统调用实现文件拷贝。fopen()
, fread()
, fwrite()
, fclose()
等标准库函数实现文件拷贝。#include <iostream>
#include <fcntl.h>
#include <unistd.h>
#include <cstring>
int main(int argc, char* argv[]) {
if (argc != 3) {
std::cerr << "Usage: " << argv[0]<< " <source> <destination>" << std::endl;
return 1;
}
int src_fd = open(argv[1], O_RDONLY);
if (src_fd == -1) {
perror("open source file");
return 1;
}
int dest_fd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (dest_fd == -1) {
perror("open destination file");
close(src_fd);
return 1;
}
char buffer[4096];
ssize_t bytes_read;
while ((bytes_read = read(src_fd, buffer, sizeof(buffer))) > 0) {
if (write(dest_fd, buffer, bytes_read) != bytes_read) {
perror("write to destination file");
close(src_fd);
close(dest_fd);
return 1;
}
}
if (bytes_read == -1) {
perror("read from source file");
}
close(src_fd);
close(dest_fd);
return 0;
}
#include <iostream>
#include <fstream>
int main(int argc, char* argv[]) {
if (argc != 3) {
std::cerr << "Usage: " << argv[0]<< " <source> <destination>" << std::endl;
return 1;
}
std::ifstream src(argv[1], std::ios::binary);
if (!src) {
std::cerr << "Error opening source file" << std::endl;
return 1;
}
std::ofstream dest(argv[2], std::ios::binary);
if (!dest) {
std::cerr << "Error opening destination file" << std::endl;
return 1;
}
dest << src.rdbuf();
if (!src || !dest) {
std::cerr << "Error copying file" << std::endl;
return 1;
}
return 0;
}
chmod
命令修改文件权限。通过以上方法,你可以在Linux环境下使用C++实现文件拷贝,并根据具体需求选择合适的方式。
领取专属 10元无门槛券
手把手带您无忧上云