基於linux的通過檔案IO實現檔案複製

2021-10-24 15:26:00 字數 2310 閱讀 8090

複製過程中顯示進度條

#include

#include

#include

#include

#include

#include

#include

#define io_size 1024*1024

/*實現檔案copy功能,把乙個檔案拷貝到另乙個檔案,如果檔案不存在則建立*/

intmain

(int argc,

char

const

*ar**)

//開啟目標檔案

dest_fd =

open

(ar**[2]

,o_wronly | o_creat|o_trunc, s_irusr|s_iwusr|s_irgrp|s_iroth);if

(dest_fd ==-1

)

file_size =

lseek

(src_fd,0,

seek_end);

//讀取文字的結束的標誌

lseek

(src_fd,0,

seek_set);

//記錄讀取開始的位置

//申請記憶體空間

buf =

malloc

(io_size);if

(buf ==

null

)printf

("\n");

//迴圈讀取原檔案的資料

while(1

)else

if(rd_ret ==0)

wr_ret =

write

(dest_fd, buf, rd_ret);if

(wr_ret ==-1

)

cur_copy_size+

=wr_ret;

printf

("\033[1a當前複製了%.2lf%%\n"

,cur_copy_size/

(double

)file_size*

100);}

free

(buf)

;//釋放空間

//關閉目標檔案

ret =

close

(dest_fd);if

(ret ==-1

)//關閉原始檔

ret =

close

(src_fd);if

(ret ==-1

)return0;

}

#include

#include

#include

#include

#include

#include

#include

#define io_size 512

#define read_block_numb 2000

/*實現檔案copy功能,把乙個檔案拷貝到另乙個檔案,如果檔案不存在則建立*/

intmain

(int argc,

char

const

*ar**)

//開啟目標檔案

dest_fp =

fopen

(ar**[2]

,"w");

if(dest_fp ==

null

)//申請記憶體空間

buf =

calloc

(read_block_numb, io_size);if

(buf ==

null

)//迴圈讀取原檔案的資料

while(1

)break;}

elseif(

ferror

(src_fp))}

wr_ret =

fwrite

(buf, io_size, read_block_numb, dest_fp);if

(ferror

(dest_fp))}

printf

("已成功複製\n");

free

(buf)

;//釋放空間

//關閉目標檔案

ret =

fclose

(dest_fp);if

(ret ==

eof)

//關閉原始檔

ret =

fclose

(src_fp);if

(ret ==

eof)

return0;

}

基於Linux的I O操作

如 mathod 01.c include include include include include include int main void else if close fd perror close exit 1 else exit 0 read write及lseek函式 語法格式 如...

Linux檔案 檔案IO概述

posix portable operating system inte ce,可移植作業系統介面規範 標準最初由ieee institute of electrical and electronics engineers,電氣和電子工程師協會,是目前最大的全球性非營利性專業技術學會 制定,目的是提...

linux檔案IO的系統IO和標準IO理解

儲存在硬碟等物理儲存器上的檔案如何進行讀取等操作?如果我們直接對其進行讀寫等操作,也是可以滴,不過這就需要很費時費力,需要對硬體的物理構造有清楚的了解,很明顯,這很影響開發效率。當然也不排除某些特殊場合需要用到,但是大多數情況下,這種 低階的 操作,早已經被人們開發出來的乙個叫做 作業系統 的東西給...