社区
C++ 语言
帖子详情
关于二进制文件读写的 read 和write的问题
ff5dq4
2007-04-21 02:36:28
我在书上看到这样的用法
使用 write把类对象写入文件保存,然后在使用read把文件读入对象里
我觉得这样做是个错误,因为对象大小可能不相同:写入文件的对象大小与
读取文件的对象大小不一样会引起保护错误
...全文
619
5
打赏
收藏
关于二进制文件读写的 read 和write的问题
我在书上看到这样的用法 使用 write把类对象写入文件保存,然后在使用read把文件读入对象里 我觉得这样做是个错误,因为对象大小可能不相同:写入文件的对象大小与 读取文件的对象大小不一样会引起保护错误
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ff5dq4
2007-04-21
打赏
举报
回复
<iostream>的
ff5dq4
2007-04-21
打赏
举报
回复
to 楼上我说的 是标准IO库中 IO类的方法 write 和 read
zhou02607
2007-04-21
打赏
举报
回复
当读的大小大于写的大小时,则读出的内容大小为写的大小。
zhou02607
2007-04-21
打赏
举报
回复
1. read
#include <unistd.h>
ssize_t read(int filedes, void *buf, size_t nbytes);
返回值:读取到的字节数;0(读到 EOF);-1(出错)
read 函数从 filedes 指定的已打开文件中读取 nbytes 字节到 buf 中。以下几种情况会导致读取到的字节数小于 nbytes :
A. 读取普通文件时,读到文件末尾还不够 nbytes 字节。例如:如果文件只有 30 字节,而我们想读取 100 字节,那么实际读到的只有 30 字节,read 函数返回 30 。此时再使用 read 函数作用于这个文件会导致 read 返回 0 。
B. 从终端设备(terminal device)读取时,一般情况下每次只能读取一行。
C. 从网络读取时,网络缓存可能导致读取的字节数小于 nbytes 字节。
D. 读取 pipe 或者 FIFO 时,pipe 或 FIFO 里的字节数可能小于 nbytes 。
E. 从面向记录(record-oriented)的设备读取时,某些面向记录的设备(如磁带)每次最多只能返回一个记录。
F. 在读取了部分数据时被信号中断。
读操作始于 cfo 。在成功返回之前,cfo 增加,增量为实际读取到的字节数。
2. write
#include <unistd.h>
ssize_t write(int filedes, const void *buf, size_t nbytes);
返回值:写入文件的字节数(成功);-1(出错)
write 函数向 filedes 中写入 nbytes 字节数据,数据来源为 buf 。返回值一般总是等于 nbytes,否则就是出错了。常见的出错原因是磁盘空间满了或者超过了文件大小限制。
对于普通文件,写操作始于 cfo 。如果打开文件时使用了 O_APPEND,则每次写操作都将数据写入文件末尾。成功写入后,cfo 增加,增量为实际写入的字节数。
mymtom
2007-04-21
打赏
举报
回复
没有什么问题呀!写进文件,再读出来,能有什么问题。
关于
read
,
write
,open时出现的文本文件和
二进制
文件读写
的
问题
(怎么写入怎么读)
使用
read
读取文本文件,一般采用字符空间作为缓存,最后输出;使用
read
读取
二进制
文件,这里采用整数读取的展示:首先创建文本文件,用
write
写入i的值到文件中;再通过lseek改变读写一个文件时的读写指针位置,用SEEK_SET把指针设置回起始位置;然后再次把读取到的数据写入整型变量a的地址,直接%d输出。
问题
1:为什么文本文件要用字符数组,而
二进制
文件要用变量名的地址呢。
问题
2:在打开文件对象时,文件是什么格式传输的。
问题
3:可以通用转化
read
吗,这样会不会有些麻烦?
C++
二进制
文件的读取和写入
我们先来说一下为什么要使用
二进制
文件,它比文本文件有哪些好处。 用文本方式存储信息不但浪费空间,而且不便于检索。例如,一个学籍管理程序需要记录所有学生的学号、姓名、年龄信息,并且能够按照姓名查找学生的信息。程序中可以用一个类来表示学生: class CStudent { char szName[20]; //假设学生姓名不超过19个字符,以 '\0' 结尾 char szId[l...
python基础复习(14)--
二进制
文件读写
二进制
文件在打开模式中使用"b"来表示 文件使用方式意 义 rb :只读打开一个
二进制
文件,只允许读数据。如文件存在,则打开后 可以顺序读;如文件不存在,则打开失败。 wb:只写打开或建立一个
二进制
文件,只允许写数据。如文件不存在, 则建立一个空文件;如文件已经存在,则把原文件内容清空。 ab:追加打开一个文本文件,并在文件末尾写数据。如文件不存在,则 建立一个空文件;如文件已经存在,则把原文件打开,并保持原内 容不变,文件位置指针指向末尾,新写入的数据追加在文件末尾。 rb+ :读写方式打开一个
二进制
文件
java文件读取内容后写出有
问题
_Java IO流读写文件的几个注意点
平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被当中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件竟然不一样?解决
问题
之后,总结了几个注意点。注意点一:
Read
er/
Write
r读写
二进制
文件是有
问题
的 :publicvoidcopyFile1(){FilesrcFile=newFile("E:/...
Java写文件导致io过高_161228、Java IO流读写文件的几个注意点
平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不一样?解决这个
问题
之后,总结了几个注意点。注意点一:
Read
er/
Write
r读写
二进制
文件是有
问题
的:上面代码使用Buffered
Read
er一行一行地读取一个文件,然后使用Buffered
Write
r...
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章