使用文本文件进行数据存取的技巧总结

上传人:kms****20 文档编号:40635741 上传时间:2018-05-26 格式:DOC 页数:21 大小:82.50KB
返回 下载 相关 举报
使用文本文件进行数据存取的技巧总结_第1页
第1页 / 共21页
使用文本文件进行数据存取的技巧总结_第2页
第2页 / 共21页
使用文本文件进行数据存取的技巧总结_第3页
第3页 / 共21页
使用文本文件进行数据存取的技巧总结_第4页
第4页 / 共21页
使用文本文件进行数据存取的技巧总结_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《使用文本文件进行数据存取的技巧总结》由会员分享,可在线阅读,更多相关《使用文本文件进行数据存取的技巧总结(21页珍藏版)》请在金锄头文库上搜索。

1、使用文本文件使用文本文件(.txt)(.txt)进行数据存取的技巧总结进行数据存取的技巧总结( (相当相当的经典的经典) )使用文本文件(.txt)进行数据存取的技巧总结由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“-“-转转-”-”标注,原作者略去,在此对所有原作者表示感谢!特别说明:由于大家在 I/O 存取上以 txt 文件为主,且读取比存储更麻烦(存储的话 fwrite, fprintf 基本够用),因此下面的讨论主要集中在“txt 文件的读取”上。除了标注了“转”之外,其余心得均出于本人经验之结果,欢迎大家指正、补充。一一. . 基本知识:基本知识:-转- 1.1. 二

2、进制文件与文本文件的区别:二进制文件与文本文件的区别: 将文件看作是由一个一个字节(byte) 组成的, 那么文本文件中的每个字节的最高位都是 0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的 0 和 1,但是打开方式不同,对于这些 0 和 1 的处理也就不同。如果按照文本方式打开,在打开的时候会进行 translate,将每个字节转换成 ASCII 码,而以按照二进制方式打开的话,则不会进行

3、任何的 translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。从文件编码的方式来看,文件可分为 ASCII 码文件和二进制码文件两种:ASCII 文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的 ASCII 码。例如,数 5678 的存储形式为: ASCII 码: 00110101 00110110 00110111 00111000 十进制码: 5

4、 6 7 8 共占用 4 个字节。ASCII 码文件可在屏幕上按字符显示,例如源程序文件就是 ASCII 文件,用DOS 命令 TYPE 可显示文件的内容。由于是按字符显示,因此能读懂文件内容。二进制文件是按二进制的编码方式来存放文件的。例如,数 5678 的存储形式为:00010110 00101110 只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C 系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。2.2. 文本模式文本模式(textmode)(t

5、extmode)和二进制模式和二进制模式(binarymode)(binarymode)有什么区别有什么区别? ? 流可以分为两种类型:文本流和二进制流。文本流是解释性的,最长可达 255 个字符,其中回车/换行将被转换为换行符“n”,(如果以“文本“方式打开一个文件,那么在读字符的时候,系统会把所有的“rn“序列转成“n“,在写入时把“n“转成“rn“ )。二进制流是非解释性的,一次处理一个字符,并且不转换字符。注: n 一般会操作系统被翻译成“行的结束“,即 LF(Line-Feed)r 会被翻译成“回车“,即 CR(Cariage-Return)对于文本文件的新行,在 UNIX 上,一般

6、用n(LF)来表示,Mac 上用r(CR)来表示,Windows 上是用nr(CR-LF)来表示。 通常,文本流用来读写标准的文本文件,或者将字符输出到屏幕或打印机,或者接受键盘的输入;而二进制流用来读写二进制文件(例如图形或字处理文档),或者读取鼠标输入,或者读写调制解调器。如果用文本方式打开二进制文件,会把“0D 0A”自动变换成“n”来存在内存中。写入的时候反向处理。而二进制方式打开的话,就不会有这个过程。但是,Unicode/UTF/UCS 格式的文件,必须用二进制方式打开和读写。-上述基础其实大可以略过,简言之,对用户来说:简言之,对用户来说:在 matlab 中存储成为二进制还是文

7、本文件取决于 fopen 的方式,如果用 wt,则存储为文本文件,这样用记事本打开就可以正常显示了;如果用 w 则存储为二进制文件,这样用记事本打开会出现小黑方块,要正常显示的话,可以用写字板或 UltraEdit 等工具打开。二二. . MatlabMatlab 的的 I/OI/O 文件操作使用技巧和总结文件操作使用技巧和总结: :1.1. MatlabMatlab 支持的支持的 I/OI/O 文件(对应文件(对应“取取/ /存存”操作)类型:操作)类型:(所有文件 I/O 程序不 需要特殊的工具箱)http:/ 不支持 doc 格式的文档存取(因为 doc 文档包含很多格式控制符),请改用

8、 txt 或者 dat 格式)2.2. MatlabMatlab 的的 I/OI/O 文件指南:文件指南:http:/ 本技术支持指南主要处理:ASCII, binary, and MAT files.要得到 MATLAB 中可用来读写各种文件格式的完全函数列表,可以键入以下命令:help iofunMATLABMATLAB 中有两种文件中有两种文件 I/OI/O 程序:程序:highhigh levellevel andand lowlow level.level.HighHigh levellevel routines:routines: 包括现成的函数,可以用来读写特殊格式的数据,并且只

9、需要少量的编程。LowLow levellevel routines:routines: 可以更加灵活的完成相对特殊的任务,需要较多的额外编程。High level routines 包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程。举个例子,如果你有一个包含数值和字母的文本文件(text file)想导入 MATLAB,你可以调用一些 low level routines 自己写一个函数,或者是简单的用 TEXTREAD 函数。使用使用 highhigh levellevel routinesroutines 的关键是:文件必须是相似的(的关键是:文件必须是相似的(homog

10、eneoushomogeneous),),换句话说,文件必须有一致的格式。下面的段落描述一些 high level file I/O routines 并给出一些例子帮助理解概念。LOAD/SAVELOAD/SAVE主要的 high level file I/O routines 是 LOAD 和 SAVE 函数。LOAD可以读 MAT-file data 或者用空格间隔的格式相似的 ASCII data. SAVE 可以将 MATLAB 变量写入 MAT-file 格式或者空格间隔的 ASCII data。大多数情况下,语法相当简单。下面的例子用到数值由空格间隔的 ASCII file sa

11、mple_file.txt :1 5 4 16 85 43 2 6 86 8 4 32 190 7 8 7 65 9 81 2 3Example: 用 LOAD and SAVE 读写数据CODE:% Load the file to the matrix, M :M = load(sample_file.txt) % Add 5 to M :M = M +5 % Save M to a .mat file called sample_file_plus5.mat:save sample_file_plus5 M% Save M to an ASCII .txt file called sam

12、ple_file_plus5.txt :save sample_file_plus5.txt M -ascii UIGETFILE/UIPUTFILEUIGETFILE/UIPUTFILEUIGETFILE/UIPUTFILE 是基于图形用户界面(GUI)的。会弹出对话框,列出当前目录的文件和目录,提示你选择一个文件。UIGETFILE 让你选择一个文件来写(类似 Windows 另存为选项?)。用 UIGETFILE,可以选择已存在的文件改写,也可以输入新的文件名。两个函数的返回值是所选文件名和路径。Example: 用 UIGETFILE 从当前目录选择一个 M-fileCODE:% Th

13、is command lists all the M-files in the current directory and% returns the name and path of the selected filefname,pname = uigetfile(*.m,Sample Dialog Box) 注意: UIGETFILE 一次只能选择一个文件。UIIMPORT/IMPORTDATAUIIMPORT/IMPORTDATAUIIMPORT 是一个功能强大,易于使用的基于 GUI 的 high level routine,用于读 complex data files。文件也必须是 h

14、omogeneous。IMPORTDATA 形成 UIIMPORT 的功能,不打开 GUI。可以将 IMPORTDATA 用于函数或者脚本中,因为在函数或者脚本中基于 GUI 的文件导入机制并不理想。下面的例子用到包含几行文件头和文本、数值数据的文件sample_file2.txt :This is a file header.This is file is an example.col1 col2 col3 col4A 1 4 612.000B 1 4 613.000C 1 4 614.000D 1 4 615.000Example: Using IMPORTDATA to read in a file with headers, text, and numeric dataCODE:% This reads in the file sample_file2.txt and creates a% structure D that contains both data and text data.% Note the IMPO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号