文件的打开方式
2010-07-15 20:53
120 查看
今天突然翻书随意翻到一段关于“文件的打开方式”的文章,随意整理下来与大家分享。
文本文件也叫做ASCII码文件,与以‘文本方式’打开文件不是同一个概念!文本文件存储的是ASSCII码字符,即存储在磁盘上只占用二进制的0x20--0x7e。另外,还有回车(0x0d),换行(0x0a),TAB(0x09)等,所以有可压缩的空间。
换行和回车是不同的,而且在不同的操作系统,解释也不相同。‘/n’一般会操作系统被翻译成"行的结束",即LF(Line-Feed);‘/r’会被翻译成"回车",即CR(Cariage-Return)
回车(CR)和换行(LF)符都是用来表示“下一行”的。而标准没有规定要使用哪一个。于是产生了三种不同的用法:
(1) Dos和windows采用回车+换行(CR+LG)表示下一行
(2) UNIX采用换行符(LF)表示下一行
(3) MAC机采用回车符(CR)表示下一行。
当在不同的系统间传递文件,就要涉及格式的转换。
文本方式和二进制方式的最大区别在于文本方式对于'/n'换行符的理解不同
(1)在DOS平台下,该字符会被展开成<CR>< LF>两个控制字符(相当于"/r/n"),在ASCII字符集下是 0DH,0AH
(2)在UNIX平台下,仅仅是<LF>,不会展开。
(3)在二进制方式下,不管是什么平台,'/n'都是精确的<LF>。
在linux/unix 系统上,只有一种文件类型的系统,带b字母的模式和对应的不带b字母的模式是相同的。(UNIX文本文件通常不包含Ctrl+Z和/r)
关于EOF:
EOF可以作为文本文件的结束标志,但不能作为二进制文件的结束符.feof函数既可以判断二进制文件,又可以判断文本文件.
EOF在Windows下是ctrl+z,linux下是ctrl+D.
1, Change the default translation mode directly by setting the global variable _fmode in your program. The initial default setting of _fmode is _O_TEXT, for text mode.
2,_O_TEXT sets text (translated) mode. Carriage return–linefeed (CR-LF) combinations are translated into a single linefeed character on input. Linefeed characters are translated into CR-LF combinations on output. _O_BINARY sets binary (untranslated) mode, in which these translations are suppressed.
MS-DOS文本文件用回车符和换行符的组合/r/n表示行尾。Macintosh文本文件使用只用一个回车符/r来表示行尾。C程序使用/n表示行尾。所以,在C程序以文本方式打开一个MS-DOS文本文件时,会将/r/n转换为/n,在写入文件的时候它会将/n转换为/r/n。(如果以二进制方式打开该文件,则C程序将看到/r和/n两个字符。)而对于Macintosh文本文件的文本视图,在读取文件时它会将/r转换为/n,在写入文件的时候它会将/n转换为/r
文本文件也叫做ASCII码文件,与以‘文本方式’打开文件不是同一个概念!文本文件存储的是ASSCII码字符,即存储在磁盘上只占用二进制的0x20--0x7e。另外,还有回车(0x0d),换行(0x0a),TAB(0x09)等,所以有可压缩的空间。
换行和回车是不同的,而且在不同的操作系统,解释也不相同。‘/n’一般会操作系统被翻译成"行的结束",即LF(Line-Feed);‘/r’会被翻译成"回车",即CR(Cariage-Return)
回车(CR)和换行(LF)符都是用来表示“下一行”的。而标准没有规定要使用哪一个。于是产生了三种不同的用法:
(1) Dos和windows采用回车+换行(CR+LG)表示下一行
(2) UNIX采用换行符(LF)表示下一行
(3) MAC机采用回车符(CR)表示下一行。
当在不同的系统间传递文件,就要涉及格式的转换。
文本方式和二进制方式的最大区别在于文本方式对于'/n'换行符的理解不同
(1)在DOS平台下,该字符会被展开成<CR>< LF>两个控制字符(相当于"/r/n"),在ASCII字符集下是 0DH,0AH
(2)在UNIX平台下,仅仅是<LF>,不会展开。
(3)在二进制方式下,不管是什么平台,'/n'都是精确的<LF>。
在linux/unix 系统上,只有一种文件类型的系统,带b字母的模式和对应的不带b字母的模式是相同的。(UNIX文本文件通常不包含Ctrl+Z和/r)
关于EOF:
EOF可以作为文本文件的结束标志,但不能作为二进制文件的结束符.feof函数既可以判断二进制文件,又可以判断文本文件.
EOF在Windows下是ctrl+z,linux下是ctrl+D.
1, Change the default translation mode directly by setting the global variable _fmode in your program. The initial default setting of _fmode is _O_TEXT, for text mode.
2,_O_TEXT sets text (translated) mode. Carriage return–linefeed (CR-LF) combinations are translated into a single linefeed character on input. Linefeed characters are translated into CR-LF combinations on output. _O_BINARY sets binary (untranslated) mode, in which these translations are suppressed.
MS-DOS文本文件用回车符和换行符的组合/r/n表示行尾。Macintosh文本文件使用只用一个回车符/r来表示行尾。C程序使用/n表示行尾。所以,在C程序以文本方式打开一个MS-DOS文本文件时,会将/r/n转换为/n,在写入文件的时候它会将/n转换为/r/n。(如果以二进制方式打开该文件,则C程序将看到/r和/n两个字符。)而对于Macintosh文本文件的文本视图,在读取文件时它会将/r转换为/n,在写入文件的时候它会将/n转换为/r
相关文章推荐
- Intellij IDE设置文件打开方式
- python随笔.文件打开方式.open
- ipynb文件打开方式
- 利用系统中已经安装的软件选择文件的打开方式
- 以Append方式打开文件,设置偏移量无效
- eclipse设置文件默认打开方式
- eml文件打开方式
- 在Linux系统下如何调整文件打开方式
- 选择打开方式,提示文件拒绝访问 的解决办法
- C++打开文件常用方式
- Java 打开文件的两种方式
- 详解Python中open()函数指定文件打开方式的用法
- 【原创】修改myeclipse中JSP文件默认打开方式
- 恢复.bat文件的默认打开方式
- Eclipse中文件打开方式的默认设置
- Android 文件打开方式
- Matlab中如何把m文件默认打开方式设成editor
- Intent机制及详解-调用系统功能,邮件发送方式,各种文件打开方法
- android打开文件及打开方式(打开程序列表)
- 不同文件(扩展名)的打开方式