`
xitong
  • 浏览: 6198414 次
文章分类
社区版块
存档分类
最新评论

简单文件操作(Linux下C++实现)

 
阅读更多

.关于文件操作的几个基本函数

1.C函数库中文件操作函数

(1)fopen

函数原型:FILE*fopen(char*path,char*mode);

函数说明:打开一个文件。

(2)fgetc

函数原型:intfgetc(FILE*stream);

函数说明:从文件中读取一个字符。出错或文件尾返回EOF

(3)fputc

函数原型:intfputc(intc,FILE*stream);

函数说明:将一个字符写入到文本文件中。

(4)fgets

函数原型:char*fgets(char*s,intsize,FILE*stream);

函数说明:从文件中读取一行字符串(遇回车换行则函数返回)。如果为文件尾返回NULLs表示要存储读取到数据的位置,sizes的大小。

(5)fputs

函数原型:intfputs(char*s,FILE*stream);

函数说明:将一行字符串写入到文件中。

(6)fprintf

函数原型:fsprintf(FILE*stream,constchar*format,...);

函数说明:格式化字符串到文件中。

(7)fread

函数原型:size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream);

函数说明:按每多少个字节读取文件。ptr表示数据缓冲区,size表示每次读取的字节数,nmemb表示读取的次数,函数返回读取成功的次数,遇EOF结束读取返回0.

(8)fwrite

函数原型:size_tfwrite(constvoid*ptr,size_tsize,size_tnmemb,FILE*stream);

函数说明:按每多少个字节将数据写入到文件中。ptr表示数据缓冲区,size表示每次写入的字节数,nmemb表示写入的次数。

(9)fseek

函数原型:intfseek(FILE*stream,longoffset,intwhence);

函数说明:移动文件流的读写位置。whence的可取值:SEEK_SET(文件头)SEEK_CUR(文件当前位置)SEEK_END(文件尾).

(10)fclose

函数原型:intfclose(FILE*stream);

函数说明:关闭一个文件

2.Linux函数库中文件操作函数

(1)open

函数原型:intopen(constchar*pathname,intoflag,...);

函数说明:打开一个文件。函数返回文件描述符fd

(2)read

函数原型:size_tread(intfd,void*buf,size_tnbytes);

函数说明:按指定字节大小读取文件。如果函数执行成功,read返回一个非负数,表示本次操作实际读入的字节数。遇EOF失败返回-1.

(3)write

函数原型:size_twrite(intfd,void*buf,size_tnbytes);

函数说明:按指定字节大小写入文件。

(4)lseek

函数原型:off_tlseek(intfd,off_toffset,intwhence);

函数说明:移动文件读写流的位置。

(5)close

函数原型:intclose(intfd);

函数说明:关闭一个文件。

.文件拷贝的三种方式

文件拷贝在以后的很多地方会用到,比如FTP文件传输、多线程下载等,所以熟练掌握文件拷贝的几种方式是以后学习的基础。文件拷贝的几种方式中,fgetcfputcfgetsfputsfprintf只可以用来读写文本文件,它们读二进制文件会出现乱码。而readwritefreadfwrite则都可以读写。值得注意的是,对文本文件的处理一般用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下实现C++对文件系统的操作。可以显示文件信息,实现pwd功能操作所在位置,增加,删除文件。copy文件查找文件。

    linux环境下利用zlib库实现压缩目录的c++程序

    在linux环境下通过zlib库压缩文件夹/目录成.zip文件的c++程序。测试ok、不乱码,如果想自己操作一边,请看我写的readme文档(包含说明和操作步骤),可以快速实现压缩。

    Linux获取CPU 内存信息到文件C++简单实现

    在Linux系统下将cpu、内存等信息获取并放在同一个文件中的C++源码,需要g++才能编译

    C++版仿Linux文件管理系统

    设计和实现了一个模拟Linux文件系统,采用树的结构设计,可登录注册,是多用户文件系统,互不干扰。实验实现的功能有目录的创建,删除,复制,粘贴,重命名,列表显示,以及文件的创建,删除,复制,粘贴,重命名,...

    linux下的C++图的操作

    本文件提供了在linux操作系统下的C++图的基本实现, 本文件主要由4个文件组成,main.cpp map.cpp map.h makefile 。主要的目的为让初学者掌握C++程序的编译过程和在linux操作系统下的指令编译,以及简单的Makefile的...

    操作系统课程设计——Linux二级文件系统设计

    使用文件来模拟外存,进行数据结构设计和操作算法的设计,实现一个文件系统并实现基本的文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容)。要求: 1、对程序的每一部分...

    操作系统课设C++模拟Linux文件系统

    1.编写程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文件。 2.该系统可以实现以下用户指令:cd、ls、mkdir、touch、gedit、rm、cp、rename、su、cls、exit、help等 任务要求: 1.深入...

    C++模拟实现的一个VFS(虚拟文件系统)

    自己在操作系统课程设计时做的模拟实现VFS系统,供大家参考。(里面有报告和源代码,标准C++代码可以在Linux通过g++编译) 摘要:本文利用虚拟文件系统(VFS)思想,建立一个...并基于此接口实现了一个简单的文件系统。

    为linux系统设计一个简单的二级文件系统

    为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); login 用户登陆 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read...

    在Linux环境下模拟实现命令解释器

    设计内容:在Linux环境下模拟实现简单命令解释器(即定义一个命令使它具有Linux中某些命令的功能) 例如:定义mydir使它具有dir 的功能 即在Linux环境中 $ mydir 和 $dir 作用一样 就实现了dir命令的解释。 (1)...

    基于C++模拟实现linux文件系统【100012414】

    实现环境:一、Ubuntu 14.04二、C++高级操作语言三、vim编辑器 通过C++调用linux系统函数,一块硬盘(创建的一个文件,本程序中是DISK)上实现一个简单的linux文件系统。

    基于Linux c/c++ 混合编程的 共享单车管理系统

    项目技术点: C++语言、linux、文件IO、list链表。 1.实现一个对共享单车的管理的,使用,调度,等等功能的系统。 2.有简单的UI界面,并且完美实现各个界面的循环操作。 3.在单车类,用户类,地区类,管理员类,这四...

    【操作系统实验报告】文件读入与导出

    (1)实验内容: ...通过在Linux操作系统上编写和调试简单程序,进一步熟悉Linux操作系统的使用,初步掌握linux环境下的C或C++编译和调试工具,为进一步理解和学习Linux操作系统的内核结构和核心机制作准备。

    CentOS简易Linux命令行模拟器-C++

    简易Linux命令行模拟器,集成了常用文件和目录操作功能: 1. mypwd:pwd,获取并显示当前工作目录的路径。 2. mylist:ls,接收一个目录参数,列出其中的所有非隐藏(即名称不以.开头)文件和目录。 3. mycd:cd, ...

    c++实现日志系统

    软件开发中常常将关键的操作、一般性警告以及严重的错误,通过日志文件的形式输出字符串,本子系统实现bootlog,debuglog,warning,fatallog等输出形式,支持linux、windows两种编译环境,支持多线程。有不到之处...

    操作系统课程设计 天津科技大学 二级文件系统设计 答案 完整代码 Liunx

    使用文件来模拟外存,进行数据结构设计和操作算法的设计,实现一个文件系统并实现基本的文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容)。要求: 1、 对程序的每一...

    linux系统简单命令

    简单的操作命令,命令应用,文件和系统命令调用,linux系统

    多用户文件系统设计源码C++

    设计一个简单的多用户...(2)为了便于实现,可以对文件读写作进行简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。 (3)文件目录的检索使用简单的线性搜索即可。 (4)其他自行设定的要求条件。

    Linux平台下的MIX汇编器设计与实现

    MIX 计算机是一个假想的...本文首先简单介绍了 Linux 下编译的一般过程、Makefile 文件以及开 发环境,包括 MIX 系统、汇编语言以及虚拟机技术。然后介绍了本系统的 总体规划及设计。最后讲述了系统具体设计与实现。

    C语言实现Linux文件系统模拟文档(内有程序)

    Linux文件系统模拟(内有程序),C语言实现 功能目录如下: * 1. 创建目录 * * 2. 删除目录 * * 3. 重命名目录 * * 4. 更改目录权限 * * 5. 创建文件 * * 6. 删除文件 * * 7. 重命名文件 * * 8. 显示文件内容 * * 9...

Global site tag (gtag.js) - Google Analytics