Linxuシステムでファイルコピー機能を実現する2つの方法

準備オーケー:

  • ソースファイル:file_sourse
  • 宛先ファイル:file_goal
  • 実行ファイル:file_ex.c(コンパイルおよび実行する必要のあるファイルはgccコマンドを使用します)
  • C言語は標準ライブラリを使用してコピー機能を実現

メインコード

	FILE *fp,*fp1;
	int cnt;
	char buf[1024];
	fp=fopen("file_sourse","r");
	fp1=fopen("file_goal","w");
	fcloseall();
	while((cnt=fread(buf,1,sizeof(buf),fp)>0))
	{
	 	fwrite(buf,1,cnt,fp1);
	}

もう一度コピーしたい場合は、こちらで使用する必要がありますfseek関数

    fseek(fp,0,SEEK_SET);//重新定位到文件起始处
	while((cnt=fread(buf,1,sizeof(buf),fp)>0))
	{
	 	fwrite(buf,1,cnt,fp1);
	}
	fcloseall();

rファイルを読み取りモードで
開き、ファイルが存在しない場合は例外をスローしますr +ファイルを読み取りおよび書き込みモードで
開き、ファイルが存在しない場合は例外をスローしますrs +ファイルを同期読み取りおよび書き込みモードで開き、通知しますオペレーティングシステムがシステムキャッシュを無視する(非推奨使用)
wファイルを書き込み形式で開き、ファイルが存在しない場合は作成し、存在する場合は上書きします
。wx操作が実行されることを除いてwと同様です。ファイルが存在する場合は失敗します
。w+読み取りおよび書き込みの形式でファイルを開き、ファイルが存在しない場合は作成します。、存在する場合は上書き
します。a。ファイルを追加形式で開きます。ファイルが存在しない場合は、作成
斧を。と同様に、ファイルが存在する場合、操作は失敗します。
+開き、読み取りと書き込みの形式でファイルを。ファイルが存在しない場合は、作成
斧+を。+と同様に、操作がファイルの場合に失敗します。存在する

  • コピー機能を実現するためのシステムコール

メインコード

	int fd,fd1;
	int cnt;
	char buf[1024];
	fd=open("file_sourse",O_RDONLY);
	fd1=open("file_goal",O_WRONLY | O_CREAT,0644);
	close(fd);
	close(fd1);
	while((cnt=read(fd,buf,sizeof(buf))>0))
	{
	 	write(fd,buf,cnt);
	}

もう一度コピーしたい場合は、こちらで使用する必要がありますlseek関数

	lseek(fd,0,SEEK_SET);//重新定位到文件起始处
	while((cnt=read(fd,buf,sizeof(buf))>0))
	{
	 	write(fd,buf,cnt);
	}
	close(fd);
	close(fd1);
  • 総括する

上記の2つのファイルコピー機能を組み合わせることで、2つの方法の類似点を描くことは難しくありません。これらの方法の使い方を暗記する必要はありません。日常の練習を通して、私たちは心に印象を与えます。 、さらにLinuxシステムの使用おとこ助けに来てください、あなたはそれを理解しそしてそれを使う方法さえ知ることにますます熟練するでしょう。

何か欠点がありましたら、ご指摘ください、ありがとうございます!

おすすめ

転載: blog.csdn.net/HG0724/article/details/102466346