python将数据写入文件件的几种方法速度比较

Linux 上的常用文件传输方式介绍与比较
ftpftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输。FTP 协议允许数据在不同文件系统的主机之间传输。尽管这个协议在传输数据上提供了高适应性,但是它并没有尝试去保留一个特定文件系统上的文件属性(例如一个文件的保护模式或者修改次数)。而且 FTP 协议很少对一个文件系统的整体结构作假定,也不提供这样的功能,比如递归的拷贝子目录。在使用 ftp 命令时,需要注意 FTP 协议的这些特性。当需要保留文件属性或者需要递归的拷贝子目录时,可以使用 rcp/scp 等命令。基本语法ftp 命令的一般格式如下:$ ftp 主机名 /IP其中“主机名 /IP ”是所要连接的远程机的主机名或 IP 地址。在命令行中,主机名属于可选项,如果指定主机名,ftp 将试图与远程机的 ftp 服务程序进行连接;如果没有指定主机名,ftp 将给出提示符,等待用户输入命令:$ ftp
ftp &此时在 ftp& 提示符后面输入 open 子命令加主机名或 IP 地址,将试图连接指定的主机。不管使用哪一种方法,如果连接成功,需要在远程机上登录。用户如果在远程机上有帐号,就可以通过 ftp 使用这一帐号并需要提供口令。在远程机上的用户帐号的读写权限决定该用户在远程机上能下载什么文件和能将上载文件放到哪个目录中。在远程站点上登录成功后,在“ ftp& ”提示符下可以自由使用 ftp 提供的各种子命令,最常用的子命令如下表所示。表 1. ftp 子命令命令描述ls列出远程机的当前目录cd在远程机上改变工作目录lcd在本地机上改变工作目录ascii设置文件传输方式为 ASCII 模式binary设置文件传输方式为二进制模式close终止当前的 ftp 会话get (mget)从远程机传送指定文件到本地机put (mput)从本地机传送指定文件到远程机open连接远程 ftp 站点quit断开与远程机的连接并退出 ftp?显示本地帮助信息!转到 Shell 中prompt 1关闭交互模式使用实例:利用编写 ftp 脚本可以自动完成文件传输任务。具体方法是使用 ftp 命令的 -in 选项,并重定向 ftp 命令的输入。现在我们来编写一个利用 ftp 登录到远程服务器,并以 bin 的文件格式,在 /home 目录下,下载 file1.log 以及 file2.sh 至本机 /opt/ibm/,并从本地 /opt 目录上传文件 file3.jave 至远程服务器 /home 的自动化脚本。ftp -ni &&+
user $USERNAME $PASSWD
lcd /opt/ibm
mget file1.log file2.sh
mput file3.jave
byercprcp 意为“ remote file copy ”(远程文件拷贝)。该命令用于计算机之间进行文件拷贝。其有两种格式。第一种格式用于文件到文件的拷贝;第二种格式用于把文件或目录拷贝到另一个目录中。基本语法rcp [-px] [-k realm] file1 file2
rcp [-px] [-r] [-k realm] file directory每个文件或目录参数既可以是远程文件名也可以是本地文件名。远程文件名具有如下形式:rname@rhost:path,其中 rname 为远程用户名,rhost 为远程计算机名,path 为该文件的路径。下表说明了 rcp 命令各个参数的含义。表 2. rcp 命令的命令行参数选项描述-r递归地将源目录中的所有内容拷贝到目的目录中。若使用该选项,目的须为一个目录。-p试图保留源文件的修改时间和模式,忽略 umask 。-k请求 rcp 获得在指定区域内的远程主机的 Kerberos 许可,而不是获得由 krb_relmofhost(3)确定的远程主机区域内的远程主机的 Kerberos 许可。-x为传送的所有数据进行 DES 加密。这会影响响应时间和 CPU 利用率,但是可以提高安全性。如果在文件名中指定的路径不是完整的路径名,则该路径将被解释为相对远程机上同名用户的主目录。若没有给出远程用户名,则使用当前用户名。如果远程机上的路径包含特殊 shell 字符,需要使用反斜线(\)、双引号(”)或单引号(’)将其括起来,使所有的 shell 元字符都能被远程地解释。需要说明的是,rcp 不提示输入口令,它通过 rsh(remote shell)命令来执行拷贝。使用实例:将本地文件复制到远程登录目录中rcp &source& &remoteDir&将多个本地文件复制到远程登录目录的子目录中rcp &source1& &source2& &source3& &subdirectory in remote system&将多个文件从多个远程源复制到使用不同用户名的远程目标中rcp &host1.user1:source1& &host2.user2:source2& &dest.destuser:directory&scpscp 命令在网络上的主机之间拷贝文件,它是安全拷贝(secure copy)的缩写。 scp 命令使用 ssh 来传输数据,并使用与 ssh 相同的认证模式,提供同样的安全保障。 scp 命令的用法和 rcp 命令非常类似,这里就不做过多介绍了。一般推荐使用 scp 命令,因为它比 rcp 更安全。我们可以通过配置 ssh,使得在两台机器间拷贝文件时不需要每次都输入用户名和密码。基本语法scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2使用 scp 命令,需要输入密码,如果不想每次都输入,可参考下面的方法。首先生成密钥对$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
10:66:da:38:85:8a:8c:bd:db:9c:6e:eb:ee:bd:7d:15 user@somehost在这里,我们指定了生成 rsa 类型的密钥。在提示密钥的保存路径和密码时,可以直接回车使用默认路径和空密码。这样,生成的公共密钥保存在 $HOME/.ssh/id_rsa.pub,私有密钥保存在 $HOME/.ssh/id_rsa 。然后把这个密钥对中的公共密钥的内容复制到要访问的机器上的 $HOME/.ssh/authorized_keys 文件中。这样,下次再访问那台机器时,就不用输入密码了。使用实例:Copy 本地文件 /etc/eva.log, 到远程机器 sysB, 用户 user 的家目录下
scp /etc/eva.log user@sysB:/home/usercopy 远程机器 sysB 上的文件 /home/uesr/eva.log, 到本地的 /etc 目录下 , 并保持文件属性不变scp -p user@sysB:/home/uesr/eva.log /etccopy sysB 上的目录 /home/user, 到本地 /home/user/tmp, &new dir,/home/user/tmp/user&scp -r user@sysB:/home/user /home/user/tmpwgetwget 是一个经由 GPL 许可的可从网络上自动获取文件的自由软件包。它是一个非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 协议,支持代理服务器以及断点续传功能。 wget 可实现递归下载,即可跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,实现远程网站的镜像。在递归下载时,wget 将页面中的超级链接转换成指向本地文件,方便离线浏览。由于非交互特性,wget 支持后台运行,用户在退出系统后,仍可继续运行。功能强大,设置方便简单。基本语法wget [options] [URL-list]wget 有很多不同的参数以用于远程站点信息的获取,常用参数如下,更多参数请参照 wget 帮助手册 http://www.gnu.org/software/wget/manual/wget.html表 3. wget 工具常用参数选项描述-r递归下载服务器上所有的目录和文件。由 -l 选项来指定递归深度。-b后台下载-m制作站点镜像-c指定断点续传功能。该功能要求服务器支持断点续传。-I指定下载目录列表,可实现批量下载-A/-R指定接受/拒绝下载列表,实现选择性地下载--proxy=on/off指定是否利用代理服务器进行下载-t,
--tries=NUMBER最大尝试链接次数 (0 表示无限制,默认为 20 次 )-nc, --no-clobber不覆盖已存在的文件-N,
--timestamping只下载比本地新的文件-nd
--no-directories不进行目录结构创建-x,
--force-directories强制创建目录结构-nH, --no-host-directories不继承主机目录结构-P,
--directory-prefix=PREFIX设置目录前缀使用实例:递归下载 http://www.ibm.com.cn 站点的信息。下载所有显示完整网页所以需要的文件,如图片等。在下载不进行上层目录搜索并将绝对链接转换为相对链接。wget -r -p -np -k http://www.ibm.com.cn将在本地硬盘建立 http://www.ibm.com.cn 的镜像,镜像文件存入当前目录下一个名为 www.ibm.com.cn 的子目录中(也可以使用 -nH 参数指定不建立该子目录,而直接在当前目录下建立镜像的目录结构),递归深度为 4,重试次数为无穷(若连接出现问题,wget 将永远重试下去,直至任务完成)wget -m -l4 -t0 http://www.ibm.com.c使用代理进行下载,并实现断点续传。代理可以在环境变量 PROXY 或 wgetrc 文件中设定。 -c 选项要求服务支持断点续传。wget -Y on -c http://www.ibm.com.cncurl另一个可以用来进行文件传输的工具是 curl,它是对 libcurl 库的一个命令行工具包装。 libcurl 库中提供了相应功能的 API,可以在程序中调用。对于 libcurl 库的使用方法介绍超出了本文的讨论范围。 curl 使用 URL 的语法来传输文件,它支持 FTP, FTPS, HTTP, HTTPS, TFTP, SFTP, TELNET 等多种协议。 curl 功能强大,它提供了包括代理支持,用户认证,FTP 上载,HTTP post,SSL 连接,文件续传等许多特性。基本语法curl [options … ] &url&其中下载参数大约有 80 多个,curl 的各个功能完全依靠这些参数来完成。下面举例说明 curl 的一些基本用法。使用实例:获取 GNU 的主页curl http://www.gnu.org获取 GNU 的 FTP 服务器上根目录下的 README 文件curl ftp://ftp.gnu.org/README从一个字典中获取 curl 的定义curl dict://dict.org/m:curl如果需要指定用户名和密码的话,可以在 url 中指定,或者使用 -u 参数curl ftp://name:passwd@machine.domain:port/full/path/to/filecurl -u name:passwd ftp://machine.domain:port/full/path/to/filecurl 会将从指定 url 处获取的内容打印到标准输出上。如果需要保存在本地文件中,可以使用 -o,或使用 -O 参数指定使用远程主机上的文件名(如果 url 中没有给出文件名的部分,则此操作将会失败)curl – o gnu.html http://www.gnu.orgcurl – O http://www.gnu.org/index.html使用 -x 选项来使用代理进行连接curl -x my-proxy:port ftp://ftp.somesite.com/README通过使用 curl 的 -T 选项来进行上载curl -T - ftp://ftp.upload.com/upfile此命令从标准输入读取数据,并上载至远程 FTP 服务器上的 upfile 文件中。也可以指定上载一个本地文件curl -T localfile -a ftp://ftp.upload.com/upfile其中 -a 参数表示以添加方式将 localfile 中的内容附加到 upfile 的末尾。总的来说,curl 适合用来进行自动的文件传输或操作序列,它是一个很好的模拟用户在网页浏览器上的行为的工具。尤其当需要在程序中调用时,libcurl 是个很好的选择。rsyncrsync 是一款高效的远程数据备份和镜象工具,可快速地同步多台主机间的文件,其具有如下特性:支持链接、所有者、组信息以及权限信息的拷贝;通过远程 shell(ssh, rsh)进行传输;无须特殊权限即可安装使用;流水线式文件传输模式,文件传输效率高;支持匿名操作;需要提及的是 rsync 以其优越的性能优势区别于其它几种 Linux 文件传输方法,其同步文件的速度相当快,这主要归功于 rsync 所使用的传输算法。简而言之 rsync 算法能在相当短的时间内计算出需要备份的数据,只对源文件与目标文件的不同之处进行传输,从而降低网络中传输的数据量,以此达到快速备份镜像的目的。下面通过一典型应用场景来描述 rsync 算法的基本原理:主机 A 与主机 B 均有对同一文件的拷贝,用户对主机 A 上的拷贝进行更新,主机 B 通过 rsync 算法对更新后的文件进行同步。以下是该算法的实现步骤:主机 B 将原始拷贝划分成大小为 N 的不重合的若干块(文件末尾部分分块大小可能不足 N),并对这些数据块进行两种不同方式的校验:32 位的滚动弱校验、128 位的 MD4 强校验。弱校验较之强校验计算速度快。主机 B 将每个数据块的弱校验、强校验结果发送给主机 A 。主机 A 对更新后的文件拷贝中的每个长度为 N 的数据块进行弱校验并与从 B 接收到的弱校验值进行匹配,若相同再进行强校验匹配。由于弱校验的滚动特性可以快速地筛选出需要进行同步的数据块。该算法的运算量主要集中在主机 A 上。通过上述计算,主机 A 将文件的不同部分发送给 B,B 接收到两个拷贝之间的不同之处,从而同步得到更新后的文件。通过如上方式,rsync 避免了对相同数据的传输,减少了网络带宽的浪费。在时间上整个过程中需一个往返,从某种程度上也保证了 rsync 的优越性能。用户可从官方网站 http://rsync.samba.org/ 上下载安装 rsync 的最新版本。使用时需将 rsync 分别安装于服务端和客户端,服务端和客户端使用同一个 rsync 软件包来实现远程镜像和定期同步更新。需要说明的是一个 rsync 服务端可同时备份多个客户端的数据;多个服务端备份一个客户端的数据。 rsync 默认端口为 873,服务器在该端口接收客户的匿名或者认证方式的备份请求。rsync 服务端在使用之前需要进行必要的配置,其配置文件为 /etc/rsyncd.conf,进行认证、访问、日志记录等控制。配置文件包括全局参数、模块参数的设置。 rsyncd.conf 文件中 [module] 之前的所有参数为全局参数,也可以在全局参数部分定义模块参数,在这种情况下该参数的值就是所有模块的默认值。全局参数设置程序使用的端口号,指定消息文件、日志文件 pid 文件以及发送日志消息的级别。模块参数主要定义服务端哪个目录需要被同步。用户可根据不同的需要指定多个模块,每个模块对应需要备份的一个目录树,即若有 N 个需要备份的目录树,则需要 N 个模块与之对应。模块中可以定义许多参数,常见参数如下。表 4. rsyncd.conf 配置文件常见模块参数列表选项描述Comment模块信息描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。Path指定供备份的目录路径,必须指定该参数。max connections指定最大并发连接数以保护服务器,超过限制的连接请求将被告知随后再试。默认值为 0,即没有限制。log file指定日志文件read only设定是否允许客户上载文件。若为 true 任何上载请求均会失败,若为 false 且客户端拥有服务器目录读写权限则可以上载。默认值为 true 。write only设定是否允许客户下载文件。若为 true 任何下载请求均会失败,默认值为 false 。List设定当客户请求可以使用的模块列表时,是否列出该模块。若为 false,则创建隐藏的模块。默认值为 true 。fake super允许文件享有所有权限,而无需后台服务以 root 权限进行操作。Filter设置过滤列表以决定哪些文件可由客户端访问。hosts allow指定允许客户连接的 IP 地址。可以为单个 IP 地址或整个网段。多个 IP 或网段需要以空格隔开。默认是允许所有主机连接。dont compress指定不进行压缩处理即可传输的文件,默认值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbzpre-xfer exec, post-xfer exec设置可在文件传输前/后执行的命令。若在文件传输前执行的命令失败,则取消本次传输操作。基本语法通过远程 shell 方式:rsync [OPTION]
[USER@]HOST:SRC
DEST使用远程 shell(如 ssh, rsh)实现将远程机器的内容拷贝到本地机器。 SRC 地址路径中以单个冒号 ":" 进行分隔。rsync [OPTION]
[USER@]HOST:DEST使用远程 shell(如 rsh、ssh)实现本地机器的内容拷贝到远程机器。 DEST 地址路径中以单个冒号 ":" 进行分隔。通过 rsync daemon 方式:rsync [OPTION]
[USER@]HOST::SRC
DEST 或rsync [OPTION]
rsync://[USER@]HOST[:PORT]/SRC
[DEST]从远程 rsync 服务器中拷贝文件到本地机。 SRC 地址路径中以双冒号 "::" 进行分隔。rsync [OPTION]
[USER@]HOST::DEST 或rsync [OPTION]
rsync://[USER@]HOST[:PORT]/DEST从本地机器拷贝文件到远程 rsync 服务器中。 DEST 地址路径中以双冒号 "::" 进行分隔。如果 rsync 命令中只指定 SRC 参数而不指定 DEST 参数,则意为显示源文件列表而非进行同步拷贝。 rsync 有许多功能选项,常用的选项如下:表 5. rsync 常用参数选项描述-a, --archive归档模式,保持所有文件属性,等同于 -rlptgoD-v, --verbose详细信息输出-r, --recursive对子目录进行递归处理-R, --relative使用相对路径信息-b, --backup创建备份-z, --compress对备份的文件在传输时进行压缩处理--delete用于同步目录,从 DEST 中将 SRC 不存在的文件进行删除--progress显示备份过程使用实例:查看服务端文件及列表
# rsync 9.186.110.53::
查看服务端可用的模块列表以及注释信息# rsync ibmuser@9.186.110.53::www/
查看服务端 www 模块中的目录及文件列表(使用 rsyncd 用户认证方式)# rsync ibmuser@9.186.110.53:/var/www/html/
查看服务端 /var/www/html 目录中的内容(使用服务端的系统用户进行验证,如 ibmuser)保持客户端与服务端的数据同步
# rsync -avz ibmuser@9.186.110.53::www/
使用后台服务方式将服务端 www 模块下的内容备份到本地 /backup1 目录中,备份时保留原有权限、属性、属主及符号连接等,并使用压缩方式加快数据传输。# rsync – avz ibmuser@9.186.110.53:/var/www/html
使用 ssh 方式将远程的 /var/www/html 目录备份到本地 /backup2/ 目录下# rsync -avz --delete ibmuser@9.186.110.53::www/
将远程 www 模块备份到本地 /backup3/ 目录中,同时进行同步目录,删除本地目录中多余的文件。当服务端的数据出现问题时,需要通过客户端的数据对服务端进行恢复,只要客户端有服务端的写入权限,即可通过调换 rsync 命令的 SRC、DEST 参数进行恢复。结尾与总结综上所述,各种文件传输方式的特征表现各有千秋,我们从以下几个方面综合对比,更深入地了解它们各自的特性。传输性能wget 通过支持后台执行及断点续传提高文件传输效率 ; rsync 则以其高效的传输及压缩算法达到快传输的目的。配置难度rcp 只需进行简单的配置,创建 .rhost 文件以及设置 /etc/hosts 文件中主机名与 IP 地址列表; wget 设置设置方便简单,只需在客户端指定参数执行命令即可; rsync 在使用前需要对服务端 /etc/rsyncd.conf 进行参数设定,配置内容相对复杂。安全性能ftp、rcp 不保证传输的安全性,scp、rsync 则均可基于 ssh 认证进行传输,提供了较强的安全保障。 wget 也可通过指定安全协议做到安全传输。通过上述的对比不难发现,每种文件传输方法基于其自身的特点与优势均有其典型的适用场景:ftp 作为最常用的入门式的文件传输方法,使用简单,易于理解,并且可以实现脚本自动化;rcp 相对于 ftp 可以保留文件属性并可递归的拷贝子目录;scp 利用 ssh 传输数据,并使用与 ssh 相同的认证模式,相对于 rcp 提供更强的安全保障;wget,实现递归下载,可跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,适合实现远程网站的镜像;curl 则适合用来进行自动的文件传输或操作序列,是一个很好的模拟用户在网页浏览器上的行为的工具;rsync 更适用于大数据量的每日同步,拷贝的速度很快,相对 wget 来说速度快且安全高效。  读者可在不同的场合根据实际需要,选择适合的文件传输方法。
添加或订阅评论,请先或。
有新评论时提醒我
static.content.url=http://www.ibm.com/developerworks/js/artrating/SITE_ID=10Zone=LinuxArticleID=405907ArticleTitle=Linux 上的常用文件传输方式介绍与比较publish-date=c++中向文件写数据有哪几种方式_百度知道
c++中向文件写数据有哪几种方式
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
_Mr_Computer_
来自电脑网络类芝麻团
_Mr_Computer_
采纳数:112
获赞数:916
参与团队:
文件文件的分类:按照用户角度分:①设备文件:如显示器(printf)标准输出文件;键盘(scanf)标准输入文件②普通文件:存放在磁等介质上的文件按照文件的逻辑结构上分:①记录文件(有定长记录、不定长记录两种)②流式文件(由字符数据顺序组成如c语言程序)按照文件的编码方式:①文本文件(又称ascii文件,每个字节存放一个ascii码)(.c、.cpp、.h、.txt、.ini、)(常见的有五种)②二进制文件(binary file)文件操作函数:一、文件的打开:文件指针名=fopen(“path\文件名”,“打开文件方式”)“文件打开方式”:rt-只读打开文本文件wt-只写打开文本文件at-追加打开文本文件,并在末尾写数据。 rb-只读打开二进制文件wb-只写打开二进制文件ab-追加打开二进制文件,并在末尾写数据。 rt+-读写打开文本文件,允许读写wt+-读写打开或建立一个文本文件,允许读写。at+-读写打开一个文本文件,允许读或在文件末尾追加数据。 rb+-读写打开二进制文件,允许读写wb+-读写打开或建立一个二进制文件,允许读写。ab+-读写打开一个二进制文件,允许读或在文件末尾追加数据。 r+w:可读写文件(具体是二进制文件还是文本文件要看打开文件的扩展名而定)例如:fp=fopen(“C.dat”,“w+b”) 文件打开模式只有r、w、a、t、b、+、这六个字符拼成。w:用w打开的文件只能向该文件写入数据(更准确是建立一个新的文件)(即将
信息从程序写入磁盘中)a:用a打开对我文件只能向已存在的文件中追加信息①对于文本文件应注意:从程序中读入内存时,要将ASCII码转换成二进制码;而
把文件以文本形式写入磁盘时,要将二进制码转换为ASCII码。②fopen函数将返回一个文本文件结构的指针(该文件不存在时,返回NULL)文件的关闭:fclose(fp);(作用强制性将存放在缓中的未满的数据写入到磁盘中,
然后释放文件指针,使其真正写入磁盘中)fclose(fp);关闭成功时返回0,失败时返回EOR文件的读写:读字符函数— fgetc()调用格式:字符变量=fgetc(文件指针(fp));函数说明:读字符时,文件必须以“读”或者“读写”的方式打开读取的结果也可以不向字符变量赋值。例如fgetc(fp)每读一个字符文件内部指针向前移动一个字符(文件内部指针不是文件指针,文件内部直镇不需要程序中定义说明由系统自动设置)返回值:fgetc(fp):成功时函数返回读入的一个字符,若读到文件尾时或者出错时,返回值为“EOF”。写字符函数—fputc()调用格式:fputc(字符量(常量或者变量),文件指针(fp))函数说明:写字符时,文件可以用“写”“读写”“追加”的方式打开文件写或者是读写的方式打开文件时,原有的内容将会被清除,从文件首部开始写入字符;若以追加的方式打开文件时,将在文件末尾开始写入字符。函数的返回值:写入成功时,返回写入的字符;失败时,则会返回“EOF”每写入一个字符,“文件内部位置指针”向后移动一个字符读字符串函数—fgets()调用格式:fgets(字符数组名,n,文件指针(fp))函数说明:N是一个正整数,表示从文件中读取的字符串不超过N-1个字符。读入最后一个字符后加上字符串结束标志'\0'.读取过程中,遇到换行或者文件结束标志“EOF”(end of file)时,读取字符串结束。写字符串函数—fputs()调用格式:fputs(字符串量,文件指针)(字符串量,即可是字符串变量(c中为字符数组),由可是字符串常量)函数说明:无///////////////////////////////////////////////////////////////--这部分有点小问题(程序运行不了)读数据块函数—fread()调用格式:fread(p,size,n,fp)函数说明:P:指向输入/输出数据块的首地址的指针Size:某类型数据存储空间的字节数(数据项大小)N:此次从文件中读取的数据项数Fp:文件指针变量写数据块函数—frite()调用格式:fread (p,size,n,fp)函数说明:P:指向输入/输出数据块的首地址的指针Size:某类型数据存储空间的字节数(数据项大小)N:此次从文件中读取的数据项数Fp:文件指针变量注意:fread、fwite函数在调用成功时,函数返回值为n的值,即输出的项数;如果失败,则返回(0)。 ==========================================================MR_COMPUTER
liusongdo_210
liusongdo_210
获赞数:56
二进制,ASCII
PIERCE3333
PIERCE3333
采纳数:15
获赞数:20
数据六,fwrite()都可以的
方式?不太明白额,
其他1条回答
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。一,FileWritter写入文件
FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指定一个true (布尔)值作为FileWritter构造函数的第二个参数,它会保留现有的内容,并追加新内容在文件的末尾。
1. 替换所有现有的内容与新的内容。
new FileWriter(file);2. 保留现有的内容和附加在该文件的末尾的新内容。
new FileWriter(file,true);
追加文件示例
一个文本文件,命名为“javaio-appendfile.txt”,并包含以下内容。
ABC Hello追加新内容 new FileWriter(file,true)
package com.yiibai.
import java.io.F
import java.io.FileW
import java.io.BufferedW
import java.io.IOE
public class AppendToFileExample
public static void main( String[] args )
String data = " This content will append to the end of the file";
File file =new File("javaio-appendfile.txt");
//if file doesnt exists, then create it
if(!file.exists()){
file.createNewFile();
//true = append file
FileWriter fileWritter = new FileWriter(file.getName(),true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write(data);
bufferWritter.close();
System.out.println("Done");
}catch(IOException e){
e.printStackTrace();
现在,文本文件“javaio-appendfile.txt”内容更新如下:
ABC Hello This content will append to the end of the file
二,BufferedWriter写入文件
缓冲字符(BufferedWriter )是一个字符流类来处理字符数据。不同于字节流(数据转换成字节),你可以直接写字符串,数组或字符数据保存到文件。
package com.yiibai.
import java.io.BufferedW
import java.io.F
import java.io.FileW
import java.io.IOE
public class WriteToFileExample {
public static void main(String[] args) {
String content = "This is the content to write into file";
File file = new File("/users/mkyong/filename.txt");
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
三,FileOutputStream写入文件
文件输出流是一种用于处理原始二进制数据的字节流类。为了将数据写入到文件中,必须将数据转换为字节,并保存到文件。请参阅下面的完整的例子。
package com.yiibai.
import java.io.F
import java.io.FileOutputS
import java.io.IOE
public class WriteFileExample {
public static void main(String[] args) {
FileOutputStream fop =
String content = "This is the text content";
file = new File("c:/newfile.txt");
fop = new FileOutputStream(file);
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
// get the content in bytes
byte[] contentInBytes = content.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fop != null) {
fop.close();
} catch (IOException e) {
e.printStackTrace();
//更新的JDK7例如,使用新的“尝试资源关闭”的方法来轻松处理文件。
package com.yiibai.
import .io.F
import java.io.FileOutputS
import java.io.IOE
public class WriteFileExample {
public static void main(String[] args) {
File file = new File("c:/newfile.txt");
String content = "This is the text content";
try (FileOutputStream fop = new FileOutputStream(file)) {
// if file doesn't exists, then create it
if (!file.exists()) {
file.createNewFile();
// get the content in bytes
byte[] contentInBytes = content.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
上传文件和写入文件
上传文件到本地1.页面写法 2.后台接受@RequestParam(value = &photofile&
File 读取文件和写入文件
public static void main(String[] args) {
readText(&C:/Users/MILO/Desktop/VisaEmv/visaemvout.p...
File&em&文件写入&/em&类,包含详细说明!!!... File&em&文件写入&/em&类,包含详细说明!!!综合评分:0 收藏评论举报 所需: 0积分/C币 开通VIP 立即下载 评论共有0条...
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io....
// 下载的方法
function doSave(value, type, name) {
if (typeo...
有时候,项目中需要将数据持久化存储。我们的做法之一就是将其写入文件。当需要的时候可以从文件中读取出来即可。
Created by hh...
在使用字符流的write()或者read()方法时,都会导致从底层输入输出流读取或者写入一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层输入输出流中读取更多的字节,使其超过满足当前读取操作...
没有更多推荐了,}

我要回帖

更多关于 向文件中写入数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信