如何在C++上創建一個將一個文件複製到其他文件的系統調用?系統調用來複制文件
回答
有一個在C++標準庫中沒有但文件系統庫,讓你有幾種選擇:
- 使用特定於平臺的API:你會使用特定的非便攜功能,以您的操作系統,但那將會做你想做的事;
- 使用(跨平臺)庫:一個好的庫是boost :: filesystem,但我不確定它允許移動/複製文件,只需檢查文檔中的函數;
- 使用std :: system()調用特定於操作系統的命令行命令:std :: system(「copy fileA.txt fileB.txt」或類似的應該在Windows上工作,它是平臺特定的,安全的角度來看,但它的作品。
此代碼拷貝一個文件C.你可以修改它複製到許多文件。
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *from, *to; char ch; if(argc!=3) { printf("Usage: copy \n"); exit(1); } /* open source file */ if((from = fopen(argv[1], "rb"))==NULL) { printf("Cannot open source file.\n"); exit(1); } /* open destination file */ if((to = fopen(argv[2], "wb"))==NULL) { printf("Cannot open destination file.\n"); exit(1); } /* copy the file */ while(!feof(from)) { ch = fgetc(from); if(ferror(from)) { printf("Error reading source file.\n"); exit(1); } if(!feof(from)) fputc(ch, to); if(ferror(to)) { printf("Error writing destination file.\n"); exit(1); } } if(fclose(from)==EOF) { printf("Error closing source file.\n"); exit(1); } if(fclose(to)==EOF) { printf("Error closing destination file.\n"); exit(1); } return 0; }
這個例子是你爲什麼要用C++而不是C寫的完美理由。C++版本只有幾行。 – 2010-08-05 04:31:09
@Martin:然後發佈如何做。 – icktoofay 2011-01-30 04:00:02
Blatently被盜您可以使用std::system
函數
#include <cstdlib>
...
std::system("cp from.txt to.txt");
小心使用「系統」功能,這就像是從DOS窗口複製文件,你基本上繞過了Windows。
你認爲這是在Windows上。 OP沒有說明。 – 2010-08-05 03:38:40
它可能是DOS命令,但仍然通過OS層。 – 2010-08-05 04:32:05
喬懷特 - 確實,這取決於命令行界面如何在該平臺上工作,但相同的代碼可能無法移植,因爲命令可能會有所不同。 Martin York - 確實如此,但使用DOS命令行有時會導致問題,特別是在刪除後,因爲您沒有獲得回收站支持。 無論如何我會考慮使用「系統」作爲黑客,所以我會避免它一般,只是我的意見。 – DevinEllingson 2010-08-05 06:07:21
- 1. 有沒有Linux系統調用或glibc函數來複制文件?
- 2. 如何將文件從本地文件系統複製到HDFS文件系統?
- 3. 從遠程系統複製* .html文件
- 4. 使用文件系統監視器來監視正在複製的文件嗎?
- 5. 如何調用操作系統功能將文件複製到文件夾?
- 6. 從HDFS複製文件到本地文件系統用JAVA
- 7. 如何使用Java程序將文件從Linux系統複製到Windows系統?
- 8. 使用Linux C選擇系統調用來監視文件
- 9. 將文件系統中的文件(圖像)複製到HDFS
- 10. 無法將文件從文件系統複製到IntelliJ IDEA 10.5
- 11. 將文件複製到iPhone系統文件夾
- 12. 訪問iphone文件系統和複製文件
- 13. boost文件系統copy_file「成功」,但沒有複製文件
- 14. 如何將文件複製到android的文件系統?
- 15. 文件描述符和系統調用
- 16. 寫系統調用文件desciptor ZERO
- 17. 如何在有根系統上寫入* .kl文件並複製到系統上
- 18. JavaFx將文件複製到系統剪貼板並粘貼到操作系統
- 19. db4o複製系統:NullReferenceException?
- 20. 系統(「」)調用
- 21. Android - 如何使用DDMS將文件夾從文件系統複製到SD卡?
- 22. 系統調用來阻止iphone 4
- 23. 來自Ruby的系統調用
- 24. 來自php的系統調用
- 25. 與操作系統無關的API來監視文件系統?
- 26. SSIS每個文件循環和文件系統任務將文件複製
- 27. 用WindowChrome複製標準系統菜單?
- 28. 的Hadoop文件系統是物理文件系統或虛擬文件系統
- 29. 使用boost文件系統獲取文件系統類型
- 30. 將可執行文件複製到android系統/ bin中
C++本身沒有系統調用,你的意思是如何添加一個系統調用到你的操作系統來做到這一點?或者如何實際進行呼叫。 – 2010-08-05 01:01:05
應該是這樣的,我喜歡在C++上編寫代碼,指示從另一個目的地複製文件,是的,這兩者都是,將系統調用添加到我的操作系統以及如何進行調用。 – RedKing 2010-08-05 01:05:10
以及我的問題不是一個是或否的問題。但無論如何,爲了開始討論系統調用,您需要告訴我們您正在使用的操作系統。其次,取決於你的操作系統,你可能需要專門用C來創建新的系統調用(例如linux)。 – 2010-08-05 01:22:29