Linux C 文件与目录3 文件读写

文件读写

  文件读写是指从文件中读出信息或将信息写入到文件中。Linux文件读取可使用read函数来实现的,文件写入可使用write函数来实现。在进行文件写入的操作时,只是在文件的缓冲区中操作,可能没有立即写入到文件中。需要使用sync或fsync函数将缓冲区的数据写入到文件中



文件写操作:

函数write可以把一个字符串写入到一个已经打开的文件中,这个函数的使用方法如下:

ssize_t  write  (int fd , void *buf , size_t  count);

参数:

  fd:已经打开文件的文件编号。

  buf:需要写入的字符串。

  count:一个整数型,需要写入的字符个数。表示需要写入内容的字节的数目。

返回值:

  如果写入成功,write函数会返回实际写入的字节数。发生错误时则返回-1,可以用errno来捕获发生的错误。

[[email protected] exercise]$ cat write.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
int main(void)
{
int fd ;
char path[] = "txt1.txt";
char s[]="hello ...";
extern int errno;
fd = open(path , O_WRONLY|O_CREAT|O_TRUNC , 0766);
if(fd != -1)
{
printf("opened file %s .\n" , path);
}
else
{
printf("can‘t open file %s.\n" , path);                          
printf("errno: %d\n" , errno);                          //打印错误编号
printf("ERR : %s\n" , strerror(errno));             //打印错误编号对应的信息。
}
write(fd , s , sizeof(s));
close(fd);
printf("Done\n");
return 0;
}

[[email protected] exercise]$ ./write
opened file txt1.txt .
Done



读取文件函数read

函数read可以从一个打开的文件中读取字符串。

ssize_t  read(int fd , void *buf , size_t  count);

参数:fd:表示已经打开的文件的编号。

   buf:是个空指针,读取的内容会返回到这个指针指向的字符串。

   count:表示需要读取的字符的个数。

返回值:返回读取到字符的个数。如果返回值为0,表示已经达到文件末尾或文件中没有内容可读。

fd = open(path , O_RDONLY);
if(fd != -1)
{
printf("opened file %s .\n" , path);
}
else
{
printf("can‘t open file %s.\n" , path);
printf("errno: %d\n" , errno);
printf("ERR : %s\n" , strerror(errno));
}
if((size = read(fd , str , sizeof(str))) < 0)
{
printf("ERR: %s" , strerror(size));                    //如果有错,通过错误编号打印错误消息。
}
else
{
printf("%s\n" , str);
printf("%d\n" , size);
}
close(fd);
return 0;
}

result:

  

opened file txt1.txt .
hello ...
10

时间: 2024-11-11 08:51:45

Linux C 文件与目录3 文件读写的相关文章

Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制

一.需求 做一个类似QQ登录似的app,将数据写到ROM文件里,并对数据进行回显. 二.截图 登录界面: 文件浏览器,查看文件的保存路径:/data/data/com.amos.datasave/files/LoginTest.txt------/data/data/(包名)/files/(文件名) 导出的文件内容: 三.实现代码 新建一个Android 工程.这里我选择的是2.1即API 7,进行开发的,其它都是默认下一步下一步即可. /datasave/res/layout/activity

C#递归删除文件夹目录及文件

在C#文件操作过程中,有时候需要删除相应目录,如果文件夹中含有其他文件夹或者文件,也需要一并进行删除,此时可能就需要使用递归来删除文件夹目录以及文件,递归过程中,如果遍历的对象是文件夹,则删除文件夹,若是文件,则删除对应文件.Directory.Delete方法可用于删除文件夹,File.Delete方法用于删除文件.具体的代码实现如下:/// <summary>/// 递归删除文件夹目录及文件/// </summary>/// <param name="dir&q

Window Linux下实现指定目录内文件变更的监控方法

转自:http://qbaok.blog.163.com/blog/static/10129265201112302014782/ 对于监控指定目录内文件变更,window 系统提供了两个未公开API:SHChangeNotifyRegister  SHChangeNotifyDeregister 分别用于注册Notify以及监视. 同时,还提供了ReadDirectoryChangesW  函数(貌似NT以上可用). 在 .net framework 中,另提供了封装好的 FileSystem

Linux学习私人笔记-目录和文件的基本命令

ls :查看文件与目录 cd :切换目录 pwd  :显示当前目录 mkdir :创建目录 rmkdir :删除一个空目录 rm -rf  :删除目录并删除目录中的所有文件 echo  :显示,打印 mv 源文件路径 移动后文件路径  :移动文件/目录 cp  源文件路径 复制到文件的路径 :复制文件 cp  -r 源文件路径 复制到文件的路径 :复制目录 常用查看文件内容: cat :从第一行开始显示文件内容 tac :从最后一行行开始显示文件内容,倒序显示. nl :显示的时候顺便输出行号

Linux中如何设置目录或文件的归属及权限

我们首先来查看一下目录的权限及归属,各个字段表示的含义: 权限字符在文件中的含义为: 读取.写入.执行权限也可以用数字来表示,具体如下: 命令chmod用来更改目录或文件的权限,基本的命令格式如下: chmod [ugoa] [+=-] [r w x] 文件或目录 或者 chmod nnn 文件或目录 其中ugoa表示该权限设置所针对的用户类别.u代表文件属主:g代表文件属组:o代表其他任何用户:a代表所有用户(u.g.o的总和). +=-表示设置权限的操作动作.+代表增加相应的权限:- 代表减

【转】VC MFC 如何删除文件,目录,文件夹

原文网址:http://shijuanfeng.blogbus.com/logs/100675115.html 第一种方法:定义一个文件类对象来操作CFile   TempFile;     TempFile.Remove(指定文件名); 第二种方法:  使用系统函数 DeleteFile( LPCSTR filename )删除文件    _rmdir(),删除目录 DeleteDirectory(sTempDir);  删除目录 RemoveDirectory(sTempDir);删除目录e

设置SVN忽略文件和目录(文件夹)

在多数项目中你总会有文件和目录不需要进行版本控制.这可能包括一些由编译器生成的文件,*.obj,*.lst,或许是一个用于存放可执行程序的输出文件夹.只要你提交修改,TortoiseSVN 就会在提交对话框的文件列表中显示出未版本控制文件.当然你可以关闭这个显示,不过你可能会忘记添加新的源文件. 最好的避免类似问题的方法是添加参考文件到该项目的忽略列表.这样他们就永远不会出现在提交对话框中,而真正的未版本控制文件则仍然列出. 1.  方法一 在 Eclipse 中点击菜单 window -->

PHP文件处理 目录与文件处理

mkdir()创建一个新目录 rmdir()删除一个空目录,如果目录下有文件先删目录下的文件 getcwd()获取当前工作目录 chdir()设置当前目录为工作目录 '@'抑错符 opendir()打开一个目录句柄 readdir()读取目录内容 scandir()列出指定文件下的所有目录和文件 fopen()打开文件------http://www.w3school.com.cn/php/func_filesystem_fopen.asp fclose()关闭文件 fwrite()写入 fil

linux 系统监控某目录下文件及文件夹的变化

inotifywait 是一个可以实时监控文件变动的工具,它利用linux内核中的inotify机制实现监控功能. 查看内核版本 [[email protected]Oracle ~]# uname -r 2.6.32-220.el6.i686 安装inotify-tools yum install -y inotify-tools 测试监控/etc,inotifywait -m /etc 用putty连接服务器,开启另一个终端,用vim编辑/etc/passwd时,另一个终端显示对应的监控信息