简单文件操作(Linux下C++实现)
2011-07-29 08:52
731 查看
一.关于文件操作的几个基本函数
1.C函数库中文件操作函数
(1)fopen
函数原型:FILE* fopen(char *path, char *mode);
函数说明:打开一个文件。
(2)fgetc
函数原型:int fgetc(FILE *stream);
函数说明:从文件中读取一个字符。出错或文件尾返回EOF。
(3)fputc
函数原型:int fputc(int c, FILE *stream);
函数说明:将一个字符写入到文本文件中。
(4)fgets
函数原型:char* fgets(char *s, int size, FILE *stream);
函数说明:从文件中读取一行字符串(遇回车换行则函数返回)。如果为文件尾返回NULL。s表示要存储读取到数据的位置,size为s的大小。
(5)fputs
函数原型:int fputs(char *s, FILE *stream);
函数说明:将一行字符串写入到文件中。
(6)fprintf
函数原型:fsprintf(FILE *stream, const char *format, ...);
函数说明:格式化字符串到文件中。
(7)fread
函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
函数说明:按每多少个字节读取文件。ptr表示数据缓冲区,size表示每次读取的字节数,nmemb表示读取的次数,函数返回读取成功的次数,遇EOF结束读取返回0.
(8)fwrite
函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
函数说明:按每多少个字节将数据写入到文件中。ptr表示数据缓冲区,size表示每次写入的字节数,nmemb表示写入的次数。
(9)fseek
函数原型:int fseek(FILE *stream, long offset, int whence);
函数说明:移动文件流的读写位置。whence的可取值:SEEK_SET(文件头)、SEEK_CUR(文件当前位置)、SEEK_END(文件尾).
(10)fclose
函数原型:int fclose(FILE *stream);
函数说明:关闭一个文件
2.Linux函数库中文件操作函数
(1)open
函数原型:int open(const char *pathname, int oflag, ...);
函数说明:打开一个文件。函数返回文件描述符fd。
(2)read
函数原型:size_t read(int fd, void *buf, size_t nbytes);
函数说明:按指定字节大小读取文件。如果函数执行成功,read返回一个非负数,表示本次操作实际读入的字节数。遇EOF失败返回-1.
(3)write
函数原型:size_t write(int fd, void *buf, size_t nbytes);
函数说明:按指定字节大小写入文件。
(4)lseek
函数原型:off_t lseek(int fd, off_t offset, int whence);
函数说明:移动文件读写流的位置。
(5)close
函数原型:int close(int fd);
函数说明:关闭一个文件。
二.文件拷贝的三种方式
文件拷贝在以后的很多地方会用到,比如FTP文件传输、多线程下载等,所以熟练掌握文件拷贝的几种方式是以后学习的基础。文件拷贝的几种方式中,fgetc、fputc、fgets、fputs、fprintf只可以用来读写文本文件,它们读二进制文件会出现乱码。而read、write、fread、fwrite则都可以读写。值得注意的是,对文本文件的处理一般用fgets等函数。下面列出文件拷贝的三种实现方式(拷贝文本文件):
1.C函数库中文件操作函数
(1)fopen
函数原型:FILE* fopen(char *path, char *mode);
函数说明:打开一个文件。
(2)fgetc
函数原型:int fgetc(FILE *stream);
函数说明:从文件中读取一个字符。出错或文件尾返回EOF。
(3)fputc
函数原型:int fputc(int c, FILE *stream);
函数说明:将一个字符写入到文本文件中。
(4)fgets
函数原型:char* fgets(char *s, int size, FILE *stream);
函数说明:从文件中读取一行字符串(遇回车换行则函数返回)。如果为文件尾返回NULL。s表示要存储读取到数据的位置,size为s的大小。
(5)fputs
函数原型:int fputs(char *s, FILE *stream);
函数说明:将一行字符串写入到文件中。
(6)fprintf
函数原型:fsprintf(FILE *stream, const char *format, ...);
函数说明:格式化字符串到文件中。
(7)fread
函数原型:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
函数说明:按每多少个字节读取文件。ptr表示数据缓冲区,size表示每次读取的字节数,nmemb表示读取的次数,函数返回读取成功的次数,遇EOF结束读取返回0.
(8)fwrite
函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
函数说明:按每多少个字节将数据写入到文件中。ptr表示数据缓冲区,size表示每次写入的字节数,nmemb表示写入的次数。
(9)fseek
函数原型:int fseek(FILE *stream, long offset, int whence);
函数说明:移动文件流的读写位置。whence的可取值:SEEK_SET(文件头)、SEEK_CUR(文件当前位置)、SEEK_END(文件尾).
(10)fclose
函数原型:int fclose(FILE *stream);
函数说明:关闭一个文件
2.Linux函数库中文件操作函数
(1)open
函数原型:int open(const char *pathname, int oflag, ...);
函数说明:打开一个文件。函数返回文件描述符fd。
(2)read
函数原型:size_t read(int fd, void *buf, size_t nbytes);
函数说明:按指定字节大小读取文件。如果函数执行成功,read返回一个非负数,表示本次操作实际读入的字节数。遇EOF失败返回-1.
(3)write
函数原型:size_t write(int fd, void *buf, size_t nbytes);
函数说明:按指定字节大小写入文件。
(4)lseek
函数原型:off_t lseek(int fd, off_t offset, int whence);
函数说明:移动文件读写流的位置。
(5)close
函数原型:int close(int fd);
函数说明:关闭一个文件。
二.文件拷贝的三种方式
文件拷贝在以后的很多地方会用到,比如FTP文件传输、多线程下载等,所以熟练掌握文件拷贝的几种方式是以后学习的基础。文件拷贝的几种方式中,fgetc、fputc、fgets、fputs、fprintf只可以用来读写文本文件,它们读二进制文件会出现乱码。而read、write、fread、fwrite则都可以读写。值得注意的是,对文本文件的处理一般用fgets等函数。下面列出文件拷贝的三种实现方式(拷贝文本文件):
//copy1.cc #include <iostream> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> using namespace std; int main(int argc, char *argv[]) { if(access(argv[1], F_OK) != 0) { cout << "file not found......" << endl; return 0; } int fin = open(argv[1], O_RDONLY, 0777); int fout = open(argv[2], O_WRONLY|O_CREAT, 0777); char buff[1024] = {'\0'}; int len = 0; while((len = read(fin, buff, sizeof(buff))) > 0) { write(fout, buff, len); } close(fin); close(fout); return 0; }
//copy2.cc #include <iostream> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { FILE *fp1; fp1 = fopen(argv[1], "r"); FILE *fp2; fp2 = fopen(argv[2], "w"); char buff[200] = {'\0'}; while(fgets(buff, sizeof(buff), fp1) != NULL) { fputs(buff, fp2); } fclose(fp1); fclose(fp2); return 0; }
//copy3.cc #include <iostream> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { FILE *fp1; fp1 = fopen(argv[1], "r"); FILE *fp2; fp2 = fopen(argv[2], "w"); char buff[1024] = {'\0'}; int count = 0; while((count = fread(buff, 1, 1024, fp1)) != 0) { fwrite(buff, 1, count, fp2); } fclose(fp1); fclose(fp2); return 0; }
相关文章推荐
- 简单文件操作(Linux下C++实现) 打开,读取 写入 关闭
- Linux下一些文件操作和一些简单命令的自己实现
- Linux下C编程-----IO/文件操作/内存映射 实现简单记录存储(3)
- linux 下文件操作和内存映射的一个简单例子
- Linux中在主机上实现对备机上目录及文件的操作的C代码实现
- 二叉树的简单操作(c++实现)
- Linux初学——文件系统的简单操作
- C++实现简单的文件I/O操作
- IO流操作实现文件拷贝\简单加密及相关知识点
- 用C++实现简单的文件I/O操作
- linux下实现g++编译链接c++源文件和头文件
- linux c/c++ 编程之-----文件目录操作
- 攻城狮在路上(叁)Linux(十八)--- 文件系统的简单操作
- C++ 简单的文件操作_适合初学者
- Linux下C编程-----文件操作(1) 通过系统调用简单操作标准输入、标准输出、标准错误
- 利用文件操作的系统调用 实现 Linux 中的cp 功能
- linux c++ 绑定函数得简单实现
- 【LINUX】:简单实现Windows和Linux文件共享
- Linux C++ 实现简单的广播服务
- C与C++简单文件操作比较