精华内容
下载资源
问答
  • 2022-03-31 03:10:23

    1)文本文件:这类文件以文本的ASCII码形式存储在计算机中。它是以"行"为基本结构的一种信息组织和存储方式。 
    2)二进制文件:这类文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们,只有通过相应的软件才能将其显示出来。二进制文件一般是可执行程序、图形、图像、声音等等。

    C++标准库提供了基于输入/输出流机制的文件操作,叫做文件流(File Stream)。打开文件的时候,可以用参数制定按照二进制方式还是文本方式。

    然而,可能与你的想象不同的是,这里的二进制或者文本与文件的格式并没有任何关系,而是文件流操作时对数据的表达方式。

    文本方式和二进制方式的最大区别在于文本方式对于'\n'换行符的理解不同,在DOS平台下,该字符会被展开成<CR>< LF>两个控制字符(相当于"\r\n"),在ASCII字符集下是0DH,0AH,而在UNIX平台下,仅仅是<LF>,不会展开。而在二进制方式下,不管是什么平台,'\n'都是精确的<LF>。

    而类似于一个数学上的数字128,会在文件中以什么样的格式存储,是以数字形式存储(80H),还是对应的可读文本('1','2','8'),却和文件流的打开方式无关。

    在C++的文件流中,使用的术语叫做格式化输入输出操作和无格式化操作,前者也就是<<和>>运算符,将数字按照可读文本存储,后者是get/put成员函数,直接存储数字格式。

    一、文本文件与二进制文件的定义

        大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。

        从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8)。而二进制文件可看成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。大家可能对BMP文件比较熟悉,就拿它举例子吧,其头部是较为固定长度的文件头信息,前2字节用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的4字节用来记录bmp文件头的长度。

    二、文本文件与二进制文件的存取  

      文本工具打开一个文件的过程是怎样的呢?拿记事本来说,它首先读取文件物理上所对应的二进制比特流,然后按照你所选择的解码方式来解释这个流,然后将解释结果显示出来。一般来说,你选取的解码方式会是ASCII码形式(ASCII码的一个字符是8个比特),接下来,它8个比特8个比特地来解释这个文件流。例如对于这么一个文件流"01000000_01000001_01000010_01000011"(下划线''_'',为了增强可读性手动添加的),第一个8比特''01000000''按ASCII码来解码的话,所对应的字符是字符''A'',同理其它3个8比特可分别解码为''BCD'',即这个文件流可解释成“ABCD”,然后记事本就将这个“ABCD”显示在屏幕上。

        事实上,世界上任何东西要与其他东西通信会话,都存在一个既定的协议,既定的编码。人与人之间通过文字联络,汉字“妈”代表生你的那个人,这就是一种既定的编码。但注意到这样一种情况,汉字“妈”在日本文字里有可能是你生下的那个人,所以当一个中国人A与日本B之间用“妈”这个字进行交流,出现误解就很正常的。用记事本打开二进制文件与上面的情况类似。记事本无论打开什么文件都按既定的字符编码工作(如ASCII码),所以当他打开二进制文件时,出现乱码也是很必然的一件事情了,解码和译码不对应嘛。例如文件流''00000000_00000000_00000000_00000001''可能在二进制文件中对应的是一个四字节的整数int 1,在记事本里解释就变成了"NULL_NULL_NULL_SOH"这四个控制符。

        文本文件的存储与其读取基本上是个逆过程。而二进制文件的存取显然与文本文件的存取差不多,只是编/解码方式不同而已,也不再叙述。

    三、文本文件与二进制文件的优缺点

        因为文本文件与二进制文件的区别仅仅是编码上不同,所以他们的优缺点就是编码的优缺点,这个找本编码的书来看看就比较清楚了。一般认为,文本文件编码基于字符定长,译码容易些;二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码难一些(不同的二进制文件格式,有不同的译码方式)。关于空间利用率,想想看,二进制文件甚至可以用一个比特来代表一个意思(位操作),而文本文件任何一个意思至少是一个字符.

        在windows下,文本文件不一定是一ASCII来存贮的,因为ASCII码只能表示128的标识,你打开一个txt文档,然后另存为,有个选项是编码,可以选择存贮格式,一般来说UTF-8编码格式兼容性要好一些.而二进制用的计算机原始语言,不存贮兼容性.    很多书上还认为,文本文件的可读性要好些,存储要花费转换时间(读写要编译码),而二进制文件可读性差,存储不存在转换时间(读写不要编解码,直接写值).这里的可读性是从软件使用者角度来说的,因为我们用通用的记事本工具就几乎可以浏览所有文本文件,所以说文本文件可读性好;而读写一个具体的二进制文件需要一个具体的文件解码器,所以说二进制文件可读性差,比如读BMP文件,必须用读图软件.

        而这里的存储转换时间应该是从编程的角度来说的,因为有些操作系统如windows需要对回车换行符进行转换(将''\n'',换成''\r\n'',所以文件读写时,操作系统需要一个一个字符的检查当前字符是不是''\n''或''\r\n'').这个在存储转换在Linux操作系统中并不需要,当然,当在两个不同的操作系统上共享文件时,这种存储转换又可能出来(如Linux系统和Windows系统共享文本文件)。关于这个转换怎样进行,我将在下一篇文章《Linux文本文件与Windows文本文件间的转换》给出^_^

    四、C的文本读写和二进制读写

        应该说C的文本读写与二进制的读写是一个编程层次上的问题,与具体的操作系统有关,所以"用文本方式读写的文件一定是文本文件,用二进制读写的文件一定是二进制文件"这类观点是错误的.下面的讲述非明确指出操作系统类型,都暗指windows.

        C的文本方读写与二进制读写的差别仅仅体现在回车换行符的处理上.文本方式写时,每遇到一个''\n''(0AH换行符),它将其换成''\r\n''(0D0AH,回车换行),然后再写入文件;当文本读取时,它每遇到一个''\r\n''将其反变化为''\n'',然后送到读缓冲区.正因为文本方式有''\n''--''\r\n''之间的转换,其存在转换耗时.二进制读写时,其不存在任何转换,直接将写缓冲区中数据写入文件.

        总地来说,从编程的角度来说,C中文本或二进制读写都是缓冲区与文件中二进制流的交互,只是文本读写时有回车换行的转换.所以当写缓冲区中无换行符''\n''(0AH),文本写与二进制写的结果是一样的,同理,当文件中不存在''\r\n''(0DH0AH)时,文本读与二进制读的结果一样.

    五、实例

    C的文本读写和二进制读写     应该说C的文本读写与二进制的读写是一个编程层次上的问题,与具体的操作系统有关,所以"用文本方式读写的文件一定是文本文件,用二进制读写的文件一定是二进制文件"这类观点是错误的.下面的讲述非明确指出操作系统类型,都暗指windows.

        C的文本方读写与二进制读写的差别仅仅体现在回车换行符的处理上.文本方式写时,每遇到一个''\n''(0AH换行符),它将其换成''\r \n''(0D0AH,回车换行),然后再写入文件;当文本读取时,它每遇到一个''\r\n''将其反变化为''\n'',然后送到读缓冲区.二进制读写时,其不存在任何转换,直接将写缓冲区中数据写入文件.对于内容为 “Ab123\r\n" (41 62 31 32 33 0D 0A)的文件,

    pf1 = fopen("f:\\1.txt","r");// 或者pf1 = fopen("f:\\1.txt","rb");
    for(int i=0;i <6;i++)
    {
       fread(&a[i],1,1,pf1);
       printf("%0X ",a[i]);
    }
    fclose(pf1);//关闭文件

    的结果分别为: 41 62 31 32 33 0A          和     41 62 31 32 33 0D  5678的存储形式为:ASCII码:    00110101   00110110   00110111   00111000  (四个字节) 5678的存储形式为:二进制:      00010110   00101110  (两个字节) 二进制文件和文本文件的唯一差异就是前者含有一些非标准输出的ASCII码。0x01就是非标准输出的ASCII码,

    0x61就是标准输出的ASCII码。)

    一. 基本知识:
    --------------------------------------------------转----------------------------------------------------
    1. 二进制文件与文本文件的区别:
    将文件看作是由一个一个字节(byte) 组成的, 那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同。如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。

    从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种:
    ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:
    ASCII码: 00110101 00110110 00110111 00111000
    ↓  ↓      ↓   ↓
    十进制码: 5     6   7      8

    共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。

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

    2. 文本模式(textmode)和二进制模式(binarymode)有什么区别?

    流可以分为两种类型:文本流和二进制流。文本流是解释性的,最长可达255个字符,其中回车/换行将被转换为换行符“\n”,(如果以"文本"方式打开一个文件,那么在读字符的时候,系统会把所有的"\r\n"序列转成"\n",在写入时把"\n"转成"\r\n" )。二进制流是非解释性的,一次处理一个字符,并且不转换字符。

    注:

    \n一般会操作系统被翻译成"行的结束",即LF(Line-Feed)
    \r会被翻译成"回车",即CR(Cariage-Return)
    对于文本文件的新行,在UNIX上,一般用\n(LF)来表示,Mac上用\r(CR)来表示,
    Windows上是用\n\r(CR-LF)来表示。

    通常,文本流用来读写标准的文本文件,或者将字符输出到屏幕或打印机,或者接受键盘的输入;而二进制流用来读写二进制文件(例如图形或字处理文档),或者读取鼠标输入,或者读写调制解调器。如果用文本方式打开二进制文件,会把“0D 0A”自动变换成“\n”来存在内存中。写入的时候反向处理。而二进制方式打开的话,就不会有这个过程。但是,Unicode/UTF/UCS格式的文件,必须用二进制方式打开和读写。

    ---------------------------------------------------------------------------------------------------------

    上述基础其实大可以略过,简言之,对用户来说:在 matlab 中存储成为二进制还是文本文件取决于fopen的方式,如果用wt,则存储为文本文件,这样用记事本打开就可以正常显示了;如果用w则存储为二进制文件,这样用记事本打开会出现小黑方块,要正常显示的话,可以用写字板或UltraEdit等工具打开。

    二. Matlab的I/O文件操作使用技巧和总结:

    1. Matlab 支持的I/O文件(对应“取/存”操作)类型:(所有文件I/O程序不需要特殊的工具箱)
    Supported File Formats for Import and Export- MATLAB & Simulink

    (注:从上表可以看到,matlab不支持doc格式的文档存取(因为doc文档包含很多格式控制符),请改用txt或者dat格式)

    2. Matlab 的I/O文件指南:
    Supported File Formats for Import and Export- MATLAB & Simulink


    以下是部分对应的中文译文:
    --------------------------------------------------------------转----------------------------------------
    本技术支持指南主要处理:ASCII, binary, and MAT files.
    要得到MATLAB中可用来读写各种文件格式的完全函数列表,可以键入以下命令:
    help iofun

    MATLAB中有两种文件I/O程序:high level and low level.
    High level routines: 包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程。
    Low level routines: 可以更加灵活的完成相对特殊的任务,需要较多的额外编程。
     

    High level routines 包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程。

    举个例子,如果你有一个包含数值和字母的文本文件(text file)想导入MATLAB,你可以调用一些low level routines自己写一个函数,或者是简单的用TEXTREAD函数。

    使用high level routines的关键是:文件必须是相似的(homogeneous),换句话说,文件必须有一致的格式。下面的段落描述一些high level file I/O routines并给出一些例子帮助理解概念。

    LOAD/SAVE

    主要的high level file I/O routines 是LOAD 和 SAVE函数。LOAD
    可以读MAT-file data或者用空格间隔的格式相似的ASCII data. SAVE可以将MATLAB变量写入MAT-file格式或者空格间隔的ASCII data。大多数情况下,语法相当简单。下面的例子用到数值由空格间隔的ASCII file sample_file.txt :

    1 5 4 16 8

    5 43 2 6 8

    6 8 4 32 1

    90 7 8 7 6

    5 9 81 2 3

    Example:
    用 LOAD and SAVE 读写数据

    % 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 'sample_file_plus5.txt' :
    save sample_file_plus5.txt M -ascii

    UIGETFILE/UIPUTFILE

    UIGETFILE/UIPUTFILE是基于图形用户界面(GUI)的。会弹出对话框,列出当前目录的文件和目录,提示你选择一个文件。UIGETFILE让你选择一个文件来写(类似Windows ‘另存为’选项?)。用UIGETFILE,可以选择已存在的文件改写,也可以输入新的文件名。两个函数的返回值是所选文件名和路径。

    Example:
    用 UIGETFILE 从当前目录选择一个 M-file

    % This command lists all the M-files in the current directory and
    % returns the name and path of the selected file
    [fname,pname] = uigetfile('*.m','Sample Dialog Box')

    注意: UIGETFILE 一次只能选择一个文件。

    UIIMPORT/IMPORTDATA

    UIIMPORT是一个功能强大,易于使用的基于GUI的high level routine,用于读complex data files。文件也必须是homogeneous。

    IMPORTDATA形成UIIMPORT的功能,不打开GUI。可以将IMPORTDATA用于函数或者脚本中,因为在函数或者脚本中基于GUI的文件导入机制并不理想。下面的例子用到包含几行文件头和文本、数值数据的文件'sample_file2.txt' :

    This is a file header.

    This is file is an example.

    col1 col2 col3 col4

    A 1 4 612.000

    B 1 4 613.000

    C 1 4 614.000

    D 1 4 615.000

    Example: Using IMPORTDATA to read in a file with headers, text, and numeric data


    CODE:

    % This reads in the file 'sample_file2.txt' and creates a
    % structure D that contains both data and text data.
    % Note the IMPORTDATA command specifies a white space
    % as the delimiter of the file, but IMPORTDATA can usually
    % detect this on its own

    D = importdata('sample_file2.txt','') % 原文有误?

    D = importdata('sample_file2.txt')

     

    可以通过访问结构D的数据和文本域,来看结构D中的真实值,例如输入:

    data = D.data

    text = D.textdata

    可以用UIIMPORT读同一个文件并得到同样的结构.

    注意: 对于 ASCII data, 你必须检验导入向导正确的识别了列分隔符。

    TEXTREAD/STRREAD

    TEXTREAD 是一个强大的动态high level routine,设计用来读ASCII格式的文本和/或数值数据文件。STRREAD除是从字符串而不是文件读以外,类似于TEXTREAD

    两个函数可以用许多参数来改变其具体的工作方式,他们返回读入指定输出的数据。他们有效的提供给你一个
    “两全其美”的方法,因为他们可以用一个命令读入混合的ASCII和数值数据(high level routines的做法),并且你可以改变他们以匹配你特定的应用(如同low level routines做到的)。例子:


    CODE:

    Example 1: Using TEXTREAD to read in an entire file into a cell array
    % This command reads in the file fft.m into the cell array, file
    file = textread('fft.m','%s','delimiter','\n','whitespace','');
    CODE:

    Example 2: Using STRREAD to read the words in a line
    % This command uses the cell array created in Example 1 to
    % read in each word of line 28 in 'file' to a cell array, words
    words = strread(file{28},'%s','delimiter','')


    CODE:

    Example 3: Using TEXTREAD to read in text and numeric data from a file with headers

    % This command skips the 2 header lines at the top of the file
    % and reads in each column to the 4 specified outputs
    [c1 c2 c3 c4] = textread('sample_file2.txt','%s %s %s %s','headerlines',2)

    CODE:

    Example 4: Using TEXTREAD to read in specific rows of text and numeric data from a file

    % This command reads in rows B and C of the file. The 'headerlines'
    % property is used to move down to the desired starting row and the
    % read operation is performed 2 times

    [c1 c2 c3 c4] = textread('sample_file2.txt',...
    '%s %s %s %s',2,'headerlines',4)



    CODE:

    Example 5: Using TEXTREAD to read in only the numeric data from a file containing text and numbers

    % This command reads in only the numeric data in the file. The
    % 'headerlines' property is used to move down to the first row
    % of interest and the first column of text is ignored with the
    % '*' operator

    [c2 c3 c4] = textread('sample_file2.txt','%*s %d %d %f','headerlines',3)

     

    DLMREAD/DLMWRITE/CSVREAD

    DLMREAD 和 DLMWRITE函数能够读写分隔的ASCII data,而不是用low level routines。他们比low level routines容易使用,Low level routines用几行代码实现的功能可以用DLMREAD/DLMWRITE简化成一行。

    CSVREAD用来读分隔符是逗号的文件,是DLMREAD的特殊情况。当读空格和Tab分隔的电子数据表文件时,DLMREAD特别有用。以'sample_file.txt'为例:


    CODE:

    Example 1: Using DLMREAD to read in a file with headers, text, and numeric data

    % This reads in the file 'sample_file2.txt' and creates a matrix, D,
    % with the numeric data this command specifies a white space as the
    % delimiter of the file

    D = dlmread('sample_file.txt','')






    CODE:

    Example 2: Using DLMREAD to extract the first 3 columns of the last 3 rows

    % This reads in the first 3 columns of the last 3 rows of
    % the data file 'sample_file.txt'into the matrix, D_partial.
    % 读文件 'sample_file.txt' 前3列后3行,到矩阵D_partial.

    D_partial = dlmread('sample_file.txt','',[2 0 4 2])






    CODE:

    Example 3: Using DLMWRITE to write a comma delimited file

    % This creates a file called 'partialD.txt' that consists of
    % the first 3 columns of the last 3 rows of data where each
    % element is separated by a comma

    dlmwrite('partialD.txt',D_partial,',')


     

    注意: 保证DLMREAD and DLMWRITE指定范围的指标从0开始,而不是从1开始。

    WK1READ/WK1WRITE

    WK1READ 用来读Lotus123 电子数据表文件的数据;WK1WRITE用来写矩阵到Lotus123 电子数据表文件。

    XLSREAD

    XLSREAD用来读Excel的数值和文本数据。


    ---------------------------------------------------------------------------------------------------------

    三. 具体例子分析:
    Matlab网站用两个例子非常详尽地介绍了各个命令的基本用法,实际中,面对手头上的数据,如何选用合适的命令呢?以下结合几个示例给出一些总结,大家举一反三就可以了:

    1. 纯数据(列数相同):
    源文件:



    CODE:
    0 3866.162 2198.938 141.140
    1 3741.139 2208.475 141.252
    2 3866.200 2198.936 141.156
    3 3678.048 2199.191 141.230
    4 3685.453 2213.726 141.261
    5 3728.769 2212.433 141.277
    6 3738.785 2214.381 141.256
    7 3728.759 2214.261 141.228
    8 3748.886 2214.299 141.243
    9 3748.935 2212.417 141.253
    10 3733.612 2226.653 141.236
    11 3733.583 2229.248 141.223
    12 3729.229 2229.118 141.186




    解答:对于这个txt文件,由于各行列数相同,故简单地使用load,importdata均可。


    2.字段名(中、英文字段均可)+数据:
    源文件:


    CODE:
    CH0 CH1 CH2 CH3
    0.000123 0.000325 0.000378 0.000598
    0.000986 0.000256 0.000245 0.000698


    解答:由于是记录的形式,因此各行列数必相同(缺少部分列时请自行在文件中补上 Inf 或 NaN),故直接使用 importdata 便可。

    3.注释(含有独立的数字串)+数据(列数相同):
    问题:这个文件有4列,但前6行是文字说明,4列数字是从第8行开始的.现在我想把这个文件的前2列和文字说明提出来组成一个新的dat文件

    源文件:


    CODE:
    Group 2 12.02.2006 Limei
    Samples of datas: 50000

    CH0 CH1 CH2 CH3
    0.000123 0.000325 0.000378 0.000598
    0.000986 0.000256 0.000245 0.000698


    目标文件:


    CODE:
    Group 2 12.02.2006 Limei
    Samples of datas: 50000

    CH0 CH1
    0.000123 0.000325
    0.000986 0.000256


    解答:由于注释中含有独立的数字串,且注释部分没有明显的格式,这时候用importdata, load等高级命令直接读取会失败,用 textread, dlmwrite 等格式化命令也不太合适,因此只能使用低级命令进行读取。(当然了,可以跳过注释部分直接用高级命令读取数据,即:[a b c d] = textread(filename,'%f %f %f %f','headerlines',4); )。一个简单的、非通用的包含注释的读取方法如下:
    -------------------------------------转 ---------------------------------------------------------------------------------------

    CODE:
    clc;clear;
    fid = fopen('exp.txt', 'r');
    fid_n=fopen('ex.dat','w');
    while ~feof(fid)
    tline=fgetl(fid);
    if ~isempty(tline)
    if double(tline(1))>=48 && double(tline(1))<=57 %数值开始
    a=strread(tline);
    a(3:4)=[];
    fprintf(fid_n,'%f %f\n',a);
    clear a;
    elseif double(tline(1))==67 %字母C开始
    [b1,b2,b3,b4]=strread(tline,'%s %s %s %s');
    b=[b1{1},' ',b2{1}];
    fprintf(fid_n,'%s\n',b);
    clear b b1 b2 b3 b4;
    else
    fprintf(fid_n,'%s\n',tline);
    end
    else
    fprintf(fid_n,'%s\n',tline);
    end
    end
    fclose(fid);
    fclose(fid_n);


    ---------------------------------------------------------------------------------

    4. 注释(不含独立的数字串)+数据(列数相同):
    源文件:

    CODE:
    你好 abc
    欢迎来到 我们
    振动论坛
    vib.hit.edu.cn
    1 11 111 1111
    2 22 222 2222
    3 33 333 3333
    4 44 444 4444
    5 55 555 5555


    解答:直接用 importdata 便可

    注:有时候注释中含有独立的数字串也可以 importdata 成功,不过得到的结果有可能不正确,建议这时候使用第3种情形的读取方式。

    5. 注释与数据混排:
    对此当然只能自己编程,举例:

    源文件

    CODE:
    1 11 111 1111
    你好
    2 22 222 2222
    欢迎来到
    3 33 333 3333
    振动论坛
    4 44 444 4444
    vib.hit.edu.cn
    5 55 555 5555


    解答:
    --------------------------------------------转--------------------------------------
    CODE:

    function [data]=distilldata(infile)
    %功能说明:
    %将保存数据的原始文件中的数值数据读入到一个data变量中
    %使用说明:
    % infile——原始数据文件名;
    % data=数据变量

    tmpfile='tmp2.mat';

    fidin=fopen(infile,'r'); % 打开原始数据文件(.list)

    fidtmp=fopen(tmpfile,'w'); % 创建保存数据文件(不含说明文字)

    while ~feof(fidin) % 判断是否为文件末尾
    tline=fgetl(fidin); % 从文件读入一行文本(不含回车键)
    if ~isempty(tline) % 判断是否空行
    [m,n]=size(tline);
    flag=1;
    for i=1:n %判断一行中有没有字符(+-.Ee和空格键除外)
    if ~(tline(i)==' '|tline(i)=='-'|tline(i)=='.'|tline(i)=='E'...
    |tline(i)=='e'|tline(i)=='+'...
    |(double(tline(i))>=48&&double(tline(i))<=57))
    flag=0;
    break;
    end
    end
    if flag==1 % 如果是数字行,把此行数据写入文件
    fprintf(fidtmp,'%s\n',tline);
    end
    end
    end
    fclose(fidin);
    fclose(fidtmp);
    data=textread(tmpfile);
    delete(tmpfile);

    ---------------------------------------------------------------------------------------------------------
    另外,如果要求不高,也可以使用 textread 函数跳过注释部分进行读取,不过前提是需要事先知道文件内容的结构(即哪行是数据、哪行是注释)

    6.各列数据的分离:
    源文件:


    CODE:
    0 + 47038.7 1.05 09:26:07 C
    2 + 46477.7 1.03 09:28:38 C
    4 + 44865.7 1.04 09:28:48 C
    6 + 41786.4 1.03 09:28:56 C
    8 + 39896.0 0.97 09:29:03 C
    10 + 37518.4 0.93 09:29:15 C
    12 + 35858.5 0.92 09:29:30 C
    14 + 46105.0 1.03 09:30:21 C
    16 + 46168.6 6.89 09:30:30 C
    18 + 48672.3 4.33 09:30:40 C
    20 + 49565.7 0.49 09:30:48 C
    22 + 49580.7 0.53 09:30:55 C
    24 + 49602.3 0.84 09:31:03 C
    26 + 49582.5 1.51 09:31:11 C
    28 + 49577.0 1.39 09:31:19 C
    30 + 49589.3 0.61 09:31:27 C
    32 + 49578.3 1.06 09:31:29 C
    34 + 49512.5 1.77 09:31:38 C

    解答:直接用 [a,b,c,d,e,f]=textread(yourfilename,'%d %c %f %f %s %c'); 便可


    四. 注意事项:

    1. 请在 matlab 中保持当前路径在该数据文件对应的目录下进行存取,否则,存取时请给出该数据文件的具体路径。

    2. 存取时,请给出该数据文件的全称(包括后缀名,读取mat文件时可省略)

    3. load data.txt和A=load(‘data.txt’)的区别请参阅精华贴:[原创]写给学习 matlab 的新手们

    4. 请根据读写需要来打开文件,即根据你的需要来指定 fopen 的 permission 属性为读或写。如果只用 a 进行写入,就不能用 fread 读取。此时应该写完关闭文件,然后用 r 打开读取,或者直接用 a+ 进行同时读写操作。否则,会产生莫名其妙的问题!以下代码是一个错误的例子:

    CODE:

    filename='e.dat';
    fid=fopen(filename,'a');
    if fid<0
    error('fopen error');
    end
    s=[1 2 3 4;5 6 7 8];
    fwrite(fid,s,'float32')
    [dd ll]=fread(fid,inf,'float32');%把t中的数据全部读出,即s矩阵。
    fclose(fid);
     

    此时得到的dd, ll 是错误且无意义的!


    五. 其他相关问题:

    1. 连续读取多个文件的数据,并存放在一个矩阵中:
    (1) 首先是如何读取文件名:
    方法一:
    filename=dir(‘*.jpg’);
    那么第i个文件的文件名就可以表示为
    filename(i).name
    文件数量为:length(filename)

    方法二:
    先在Windows的 MSDOS(命令行)中使用以下命令生成一个list.txt文件:

    dir path\folder /on /b /s > path\list.txt

    举例:dir d:\test /on /b /s > d:\list.txt

    然后在 matlab 中使用:

    filename = textread(sFileFullName,'%s');

    把所有文件名读取到list细胞矩阵中,最后对filename{i}便可得到各文件名。


    (2) 然后是读取文件名的数据并存储:
    假设每个文件对应的数据是m*n的,则:

    CODE:
    k = length(filename);
    Data = zeros(m,n,k);
    for ii = 1:k
    Data(:,:,ii) = yourreadstyle(filename{ii}); %yourreadstyle是对应的文件读取方式的函数
    end

    2. 连续读取多个文件的数据,并存放在多个矩阵(以文件名命名)中:
    假设每个文件对应的数据是m*n的,则以上述第二种文件名读取方法为例:

    CODE:
    k = length(filename);
    for ii = 1:k
    D = yourreadstyle(filename{ii});
    eval([‘Data_’, num2str(ii), ‘ = D;’]);
    end



    3. 文件名命名问题:
    文件名为 abc00001,abc00002,... abc00009,abc00010,... abc00099,abc00100,...abc00879. 准备把这些文件名给放到一个数组里面去。

    解答:

    CODE:
    a=cell(879,1);
    for k=1:879
    a{k} = sprintf('%.5d',k);
    end


    4. 上述各种文件格式、类型自动识别问题:可以利用正则表达式来处理,使之通用性较强。例如使用以下代码可以自动处理上面提到了例1到例5各种情形,不过由于存在自动判断,对某些例子(如例1)效率自然要低一点,而对于另外的例子(如例3、例5)效率估计要高一点(少用了一个循环)。

    CODE:
    function [data]=distilldata_eight(infile)
    %功能说明:
    %将保存数据的原始文件中的数值数据读入到一个data变量中(自动判断数据行)
    %使用说明:
    % infile——原始数据文件名;
    % data=数据变量
    tmpfile='tmp2.mat';
    fidin=fopen(infile,'r'); % 打开原始数据文件(.list)
    fidtmp=fopen(tmpfile,'w'); % 创建保存数据文件(不含说明文字)
    while ~feof(fidin) % 判断是否为文件末尾
    tline=fgetl(fidin); % 从文件读入一行文本(不含回车键)
    if ~isempty(tline) % 判断是否空行
    str = '[^0-9 | \. | \- | \s | e | E]'; %正则表达式为:该行中是否包含除 - . E e 数字 和 空白字符 外的其他字符
    start = regexp(tline,str, 'once');
    if isempty(start)
    fprintf(fidtmp,'%s\n',tline);
    end
    end
    end
    fclose(fidin);
    fclose(fidtmp);
    data=textread(tmpfile);
    delete(tmpfile)



    5. 大量数据的读取问题:
    可以考虑使用循环分批读取(特别是在各数据是独立的时候),或者使用稀疏矩阵来实现(对此可以参阅本版精华贴: [原创]提高matlab运行速度和节省空间的一点心得(之三))。另外,也可参考《深入浅出MATLAB 7_X混合编程》一书第一章

    6. 读取整个txt文件的内容(获得文件中的所有字符):

    CODE:

    f = fopen('yourfilename.txt','rt'); % t 属性根据需要可省略
    x = fread(f,'*char');
    fclose(f);


    7. 把维数不同的矩阵及其变量名保存到一个 txt 文件中,例如 a1 = 123; a2 = [1 2 3;4 5 6] ,希望得到的 txt 文件如下:


    QUOTE:

    a1
    123
    a2:
    1 2 3
    4 5 6






    如果写入的时候简单一点,则可以采用以下方式,不过读取的时候比较麻烦:

    CODE:

    a1=123;
    a2=[1 2 3;4 5 6];
    fid = fopen('myfile.txt', 'wt');
    for i=1:2
    fprintf(fid, '%s: \n %s\n', ['a',int2str(i)], mat2str(eval(['a',int2str(i)])));
    end
    fclose(fid);


    相反,如果写入的时候复杂一点,则读取的时候会简单一点:

    CODE:

    a1=123;
    a2=[1 2 3;4 5 6];
    fid = fopen('myfile.txt', 'wt');
    for i=1:2
    fprintf(fid, '%s: \n', ['a',int2str(i)]);
    b = eval(['a',int2str(i)]);
    fprintf(fid, [repmat('%d ', 1, size(b,2)), '\n'], b');
    end
    fclose(fid);

    更多相关内容
  • 介绍了html文档中几个基本标签的含义,以及html文档的声明方式,为什么html被称为文本标记语言,还有一些代码,可以运行体会。


    前言

    介绍一下html中几个简单的标签以及html文档结构


    一、!DOCTYPE html什么用?

    它是html5标准网页声明,全称为Document Type HyperText Mark-up Language,意思为文档种类
    为超文本标记性语言或超文本链接标示语言,现在是这个简洁形式,支持html5标准的主流浏览器
    都认识这个声明。表示网页采用html5,<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html>
    标签之前。此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范。
    这个标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。
    

    二、什么是超文本标记语言?

    HTML 全称为 HyperText Markup Language 是构成 Web 前端页面的脊梁柱。 它定义了网页内容
    的含义和结构。“超文本”(hypertext)是指连接单个网站内或多个网站间的网页的链接。 链接是
    网络的一个基本方面。 只要将内容上传到互联网,并将其与他人创建的页面相链接,就可以将你的文本
    实现共享,成为了“超级文本”。在HTML文本中不仅仅支持各个文本间互通,更是可以结合css、js等语言对
    其进行修饰,达到流畅的互通,达到体验感满满的互通。
    

    三、介绍几个简单的标签

    0.什么是标签

    语法:
    	<标签名>内容</标签名>
    eg:
    	 <h6>处处蚊子咬</h6>
    
    对于html不需要特定的编译器,开发环境,有一台电脑,有一个不错的浏览器即可开发
    

    1.html

    	整个html文档都包含在html标签内,Dom进行解析的时候会将标签对半,从最外层的标签开始解析
    

    2.head

    	包含在html标签内,一般存放引入的外部css,js文档以及本文件的一些声明
    

    3.body

    	包含在html标签内,一般存放文件的主体内容
    

    4.p

    	段落标签,将想要显示的话写进这个标签内。
    

    5.title

    	标题标签,会将字进行放大加粗,显示在网页
    

    6.h1

    	h是head的简写,就是每一段的标题,这个系列一共有6个分别为h1、h2、h3、h4、h5、h6
    

    四、结合实例看标签

    	以下代码块中strong、em是对文字的一种修饰标签(加粗、下划线、删除线等等),在这里就不
    	细细阐述了,可以结合运行结果查看各各标签的作用
    

    1.代码段

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>我的第一个html</title>
    </head>
    
    <body>
        <title>
            hello world
        </title>
        <h1><strong>春眠不觉晓</strong></h1>
        <h2><em>处处蚊子咬</em></h2>
        <h3><del>夜来风雨声</del></h3>
        <h4><ins>花落知多少</ins></h4>
        <h5><i>春眠不觉晓</i></h5>
        <h6><b>处处蚊子咬</b></h6>
        <h1><s>夜来风雨声</s></h1>
        <h2><u>花落知多少</u></h2>
        <h3>夜来风雨声</h3>
        <h4>花落知多少</h4>
        <h5>春眠不觉晓</h5>
        <h6>处处蚊子咬</h6>
        <p>
            我是p标签
        </p>
    
    </body>
    
    </html>
    

    2.运行结果

    在这里插入图片描述


    总结

    html标签相当简单,主要了解一下各个标签的作用,再上手运行一下代码效果即可。

    展开全文
  • C语言文件操作--文本文件详解(附代码)

    千次阅读 多人点赞 2019-07-25 11:31:31
    打开文件方式: #include <stdio.h> #include <stdlib.h> int main() { char ch; FILE *fp;... fp=fopen("C:\\Users\\Desktop\\AMC\\文件操作\\a.txt","r");... //打开文本文件 //1. ...

    C语言文件操作

    前言

    什么是文本文件???
    我们在刚刚接触c语言时就了解了ASCII标,每个特定的数代表一个字符,那么将字符形式的文件就是ASCII文件,也称为文本文件,每个字节存放一个字符的ASCII值。

    1. 打开文本文件

    注意:应提前建立一个.text文本文件,放到与.c文件同一个文件夹中
    fopen 打开文件函数 (成功打开后指向该流的文件指针就会被返回,失败返回NULL)
    fclose 关闭文件函数
    打开文件方式:
    在这里插入图片描述
    代码示例:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char ch;
        FILE *fp; 	//声明文件指针
        fp=fopen("a.txt","r");  	//以只读方式打开文本文件
        if(fp==NULL)
        {
            printf("Fail to open the file!");
            exit(0);
        }
        else
        {
            printf("The file is open!\n");
        }
    	fclose(fp);	//关闭文件
        return 0;
    }
    
    
    

    2. 判断是否读取到文件末尾

    1. feof()函数检查文件是否读取完毕,没到最尾部返回0,到最尾部返回非零值。
    2. fgetc()可从文件数据流中一次读取一个字符,然后读取光标移动到下一个字符,并逐步将文件的内容读出。如果字符读取成功,则返回所读取的字符,否则返回EOF(end of file)。

    代码块1:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char ch;
        FILE *fp; //声明文件
        fp=fopen("a.txt","r"); //以只读方式打开文件
        if(fp==NULL)
        {
            printf("Fail to open the file!");
            exit(0);
        }
        while(!feof(fp))  //判断是否到文件结尾
        {
        		 ch=fgetc(fp);    //依次读取文本中一个个字符
        		 printf("%c",ch);//可在显示屏上依次打印文件中字符
        }
        fclose(fp);
        return 0;
    }
    
    

    代码块2:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char ch;
        FILE *fp; //声明文件
        fp=fopen("a.txt", " r " ); //打开文件
        if(fp==NULL)
        {
            printf("Fail to open the file!");
            exit(0);
        }
       while( ( ch=fgetc(fp) ) != EOF  )  //判断是否到文件结尾
        {
           	 printf("%c",ch);//可在显示屏上依次打印文件中字符
        }
        fclose(fp);  //关闭文件
        return 0;
    }
    

    小结:代码1与代码2相比代码2看起来更简洁,未使用feof()函数

    3. 顺序读写数据文件

    3.1读写字符函数

    函数调用方式
    fgetc()fegrtc(文件指针)
    fputc()fputc(ch,fp)

    //把字符变量ch写到fp所指向的文件中去
    代码示例:

    #include <stdio.h>
    int main()
    {
         FILE*fp; //设置一个文件指针
         char ch; //定义一个待用字符变量
         if((fp=fopen("test.txt","w"))==NULL) //以只写方式打开文件
         {
               printf("ERROR");
               exit(0);		 //关闭所有文件,终止正在执行的程序
          }
         scanf("%c",&ch);
         while(ch!="\n") 
          {
                 fputc(ch,fp); //将字符ch写入fp所指向的文件
                 scanf("%c",&ch);
          } 
    	 fclose(fp);		//关闭文件
    }
    
    

    值得注意的是当输入字符后,文本中原先内容被清空
    如何在原先内容上续写呢?

    if((fp=fopen("test.txt","a"))==NULL)		 //   只需将w改为a即可
    

    如此就能解决问题。
    因此,对文件进行操作时,一定要选择适宜的文件打开方式!!!

    3.2字符串

    函数调用方式功能返回值
    fgets()fgets(str,n,fp)从fp指向的文件读入一个长度为n-1的字符串,存放到字符数组str中去成功返回地址str,失败返回NULL
    fputs()fputs(str,fp))把str所指向的字符串写入fp所指向的文件中成功返回0,失败返回非零

    运用fgets()函数代码块:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main()
    {
        char str[10];//定义一个字符数组用于储存文本文件中字符串
        FILE *fp; //声明文件
        fp=fopen("a.txt","r"); //以只读方式打开文件
        if(fp==NULL)
        {
            printf("Fail to open the file!");
            exit(0);
        }
        else
        {
            printf("The file is open!\nPlease proceed to the next step\n");
        }
        fgets(str,5,fp); //从文件中取出4个字符
        puts(str); //将文件内容打印到显示屏上
        fclose(fp);
        return 0;
    }
    
    

    运用fputs()函数代码块:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main()
    {
        char str[10];
        FILE *fp; //声明文件
        fp=fopen("a.txt","a"); //以追加方式打开文件
        if(fp==NULL)
        {
            printf("Fail to open the file!");
            exit(0);
        }
        else
        {
            printf("The file is open!\nPlease proceed to the next step\n");
        }
        printf("please input content:\n");
        gets(str);
        fputs(str,fp);
        fclose(fp);
        return 0;
    }
    
    

    小结:相比之前的读取,fgets()函数不够灵活,受到一开始“n”的限制;而录入,fputs()函数更简洁,容易记忆。

    4. 用格式化的方式读写文本文件

    引子:在以前的输出输入之中,常用scanf和printf函数,格式化读写函数和他们类似,而不同点就是,scan()f函数接收的是来自键盘的信息,fscanf()函数接收的是文件中的内容;printf()函数是将内容打印在显示屏上,fprintf()函数是将内容打印到文件中。

    函数调用方式
    fscanf()fscanf(文件指针,格式字符串,输入列表)
    fprintf()fprintf(文件指针,格式字符串,输出列表)

    实例讲解:

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int main()
    {
    	char str1[20],str2[20];
    	FILE*fp;
    	if((fp=fopen("text.txt","r+"))==NULL)   //以读写的方式打开test
    	{
    		printf("ERROR");
    		exit(0);
    	}
    	
    	printf("在显示屏上打印文件中的内容:\n");
    	
    	fscanf(fp,"%s",str1);
        puts(str1);//向显示屏打印 从文件接受的字符串
        
        printf("\n请输入要写到文件的内容:\n");
        
        gets(str2);  //输入
    	fprintf(fp,"%s",str2);
    
    	fclose(fp);   //关闭文件
    
    }
    
    

    小结:由代码实例讲解可知,fprintf()函数和fputs()函数效果一样;
    而fscanf()函数被输入列表str定义时【】中的数值所限制。

    总结·:由以上众多代码示例可以发现,fgetc()函数和fprintf()函数,fputs()函数结合使用能够完成大多数任务。
    有趣
    以上是小编将自己对文件操作中的对文本文件操作的理解,分析,看法融入其中,如有发现问题,请在评论区留下你宝贵的意见。

    展开全文
  • 文本文件的读写操作

    千次阅读 2019-09-21 21:41:39
    文本文件的读写操作C语言CppC#文件的读取StreamReader1. 使用前置命名空间`using System.text`和`using System.IO`2. 对象的建立:3. 常用属性方法: C语言 Cpp C# 文件的读取 StreamReader 1. 使用前置命名空间...

    C语言

    Python

    教程1

    Cpp

    方法一:

    1. 头文件fstreamifstreamofstream
    2. fstresm包含剩余两个文件、ifstream文件写入操作、ofstream文件读取操作

    方法二:采用文件指针进行文本文件读写

    1. 建立文件指针:FILE* fid = fopen("filepath","rb等读写操作");
    2. 判断文件是否被读入
    if (fid==NULL){ cerr<<"Failed opening file."<<endl; exit(-1);}
    
    1. 开辟内存存放数据(以LAS数据结构体为例,使用malloc函数)
    //建立结构体
    struct LAS_DATA_A
    {
    	double X;
    	double Y;
    	double Z;
    	int R;
    	int G;
    	int B;
    	double RH;
    };
    //主函数中开始分配内存
    LAS_DATA_A *las_data_a = (LAS_DATA_A*)malloc(sizeof(LAS_DATA_A)*Row_NUM);
    //结构体名 * 对象名 = (结构体名*)malloc(单个结构体大小*总体数量);
    

    在完成内存分配之后,只需要将结构体数组指针当做数组使用即可,即las_data_a[1].X = ...

    1. 根据文件结构进行读写,以文本LAS数据为例
      将数据存放于结构体之中,同时增加进度输出
      注意!!!输出函数将会极大影响程序运行速度!在输出时应增加判断以减少输出
    // 123(x) 234(y) 345(z) 110(R) 220 (G) 255(B) 0(RH)  分别以空格进行间隔
    	for (int i = 0; i < Row_NUM; i++)
    	{
    		fscanf(fid, "%lf %lf %lf %d %d %d %lf", &las_data_a[i].X, &las_data_a[i].Y, &las_data_a[i].Z, &las_data_a[i].R, &las_data_a[i].G, &las_data_a[i].B, &las_data_a[i].RH);
    		if (i % 100000 == 0)
    			printf("\b\b\b\b\b\b\b\b\b\b%3.5f%% ", (double)i * 100 / Row_NUM);
    	}
    
    1. 验证文件是否读完(采用fgetc()函数进行验证)
    if(fgetc(fid)==EOF)
    {
    	print("Read Finished\n");	//文本已经读到文本最后
    }
    

    C#

    文件的读取

    StreamReader

    1. 使用前置命名空间using System.textusing System.IO

    2. 对象的建立:

    方法一:

    • 首先应创建FileStream对象FileStream fs = new FileStream(@"c:\test.txt", FileMode.Open);
    • StreamReader sr = new StreamReader(fs);
      方法二:
    • 同SteamWriter一样,StreamReader类可以直接在包含具体文件路径的字符串中创建:
    • StreamReader sr = new StreamReader("test.txt");

    3. 常用属性方法:

    属性或方法作用
    Encoding CurrentEncoding只读属性,获取当前流中使用的编码方式
    bool EndOfStream只读属性,获取当前的流位置是否在流结尾
    void Close()关闭流
    int Peek()获取流中的下一个字符的整数,如果没有获取到字符, 则返回 -1
    int Read()获取流中的下一个字符的整数
    int Read(char[] buffer, int index, int count)从指定的索引位置开始将来自当前流的指定的最多字符读到缓冲区
    string ReadLine()从当前流中读取一行字符并将数据作为字符串返回
    string ReadToEnd()读取来自流的当前位置到结尾的所有字符

    举例:

     class Program
        {
            static void Main(string[] args)
            {
                FileStream fs = new FileStream(@"c:\1.txt", FileMode.Open);
                StreamReader sr = new StreamReader(fs);//用FileStream对象实例化一个StreamReader对象
                while(sr.Peek()!=-1)//判断文件中是否有字符
                {
                    string str = sr.ReadLine();//读取文件中的一行字符
                    Console.WriteLine(str);
                }
                sr.Close
            }
        }
    

    分隔文件的读取

    读取使用逗号分隔的文件,string类提供了一种称为Split()的方法,可以用于将字符串按照提供的分隔符分隔成字符组

    String.Split方法提供的重载函数

    名称说明
    String.Split (Char[])返回包含此实例中的子字符串(由指定 Char 数组的元素分隔)的 String 数组。
    String.Split (Char[], Int32)返回包含此实例中的子字符串(由指定 Char 数组的元素分隔)的 String 数组。参数指定返回的子字符串的最大数量。
    String.Split (Char[], StringSplitOptions)返回包含此字符串中的子字符串(由指定的Char 数组的元素分隔)的 String 数组。参数指定是否返回空数组元素。
    String.Split (String[], StringSplitOptions)返回包含此字符串中的子字符串(由指定的String 数组的元素分隔)的 String 数组。参数指定是否返回空数组元素。
    String.Split (Char[], Int32, StringSplitOptions)返回包含此字符串中的子字符串(由指定的 Char 数组的元素分隔)的 String 数组。参数指定要返回子字符串的最大数量,以及是否要返回空数组元素。
    String.Split (String[], Int32, StringSplitOptions)返回包含此字符串中的子字符串(由指定的 String 数组的元素分隔)的 String 数组。参数指定要返回子字符串的最大数量,以及是否要返回空数组元素。
    • StringSplitOptions是拆分的选项,StringSplitOptions.None表示如果在拆分时遇到空字符也拆分出一个元素。StringSplitOptions.RemoveEmptyEntries表示在拆分时不需要白喊空字符串。
    例1:
    ###数据拆分使用举例,将一字符串以逗号为界线拆分为小字符串。
    class Program
        {
            static void Main(string[] args)
            {
                string str = "100,20,30,40";
                string[] condition = { "," };
                string[] result = str.Split(condition, StringSplitOptions.None);
                Console.WriteLine(result[0]);
                Console.WriteLine(result[1]);
                Console.WriteLine(result[2]);
                Console.WriteLine(result[3]);
                Console.WriteLine("数组的行数:"+result.Length);
                Console.ReadLine();
            }
        }
    

    结果:
    在这里插入图片描述

    数据格式转换的方法

    C# Convert 方法是数据类型转换中最灵活的方法,它能够将任意数据类型的值转换成任意数据类型,前提是不要超出指定数据类型的范围。

    方法说明
    Convert.ToInt16()转换为整型(short)
    Convert.ToInt32()转换为整型(int)
    Convert.ToInt64()转换为整型(long)
    Convert.ToChar()转换为字符型(char)
    Convert.ToString()转换为字符串型(string)
    Convert.ToDateTime()转换为日期型(datetime)
    Convert.ToDouble()转换为双精度浮点型(double)
    Conert.ToSingle()转换为单精度浮点型(float)
    展开全文
  • 文本文件从一种语言翻译成另一种语言,或从一种格式翻译成另一种。 当前支持以下文件格式: 文件格式 扩展名 .properties Windows资源文件 .resw, .resx (OSX plist) .plist .po, .pot .strings .yaml ...
  • 超文本链接的解释链接从一个文本文档指向其它文本文档或从文本锚点***anchor***指向某已命名位置的链接***link***。超文本1965年TedNelson在计算机上处理文本文件时想了一种把文本中遇到的相关文本组织在一起的方法...
  • 自然语言处理—文本分类综述/什么文本分类

    千次阅读 多人点赞 2021-11-22 15:11:42
    最近在学习文本分类,读了很多博主的文章,要么已经严重过时(还在一个劲介绍SVM、贝叶斯),要么就是机器翻译的别人的英文论文,几乎看遍全文,竟然没有一篇能看的综述,花了一个月时间,参考了很多文献,特此写下此...
  • 文本文件和二进制文件学习

    千次阅读 2016-07-03 20:23:46
     二进制文件与我们通常使用的文本文件储存方式有根本的不同。这样的不同很难用言语表达,自己亲自看一看,理解起来会容易得多。因此,我推荐学习二进制文件读写的朋友安装一款十六进制编辑器。这样的编辑器有很多,...
  • matlab处理txt文本文件

    2021-04-18 08:44:07
    二进制文件与文本文件的区别:将文件看作是由一个一个字节(byte) 组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都...
  • 加密程序会将来自文本文件的加扰的行写入到包含的文本文件中,该文件称为crypto.txt。 解密程序要求输入加密文件和索引文件(跟踪行索引)的名称。 加密文件的名称应为crypto.txt,索引文件的名称应为index.txt
  • 用于获取股票清单并创建包括其行业和行业的新文本文件的代码。 main()可以采用称为sort的参数。 默认情况下,它是关闭的,但是如果设置为true,它将生成相同的文本文件,除了它将由行业排序,而不是由股票行情...
  • 文本文件与二进制文件区别

    千次阅读 2018-11-15 13:50:18
    1)文本文件:这类文件以文本的ASCII码形式存储在计算机中。它是以"行"为基本结构的一种信息组织和存储方式。  2)二进制文件:这类文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们,只有...
  • 例如,“如果您的任务是社交工作记忆”,则您的项目文件夹将被称为“ MSS_swm”,而MSS脚本将被称为“ MSS_swm.m” 将任何特定于任务的刺激(例如图像或电影)添加到您的文件夹中。 更改task_run1.txt的名称以反映您...
  • 1、什么是HTML?     HTML是用来描述网页的一种语言     HTML指的是超文本标记语言:HyperText Markup Language,是一种用于创建网页的标准标记语言    &...
  • 我正在尝试编写一个python脚本,该脚本将获取一个文件(我们将其称为input.txt),并查找以文本“move to first perimeter point”结尾的行,然后它需要将这行替换为它后面的行,并将它后面的行替换为第一行。文件的...
  • python文本分析之处理和理解文本

    千次阅读 2021-01-12 05:49:21
    前言:在进行自然语言的建模(NLP)时,我们通常难以处理文字类型的数据,因此在常见的机器学习项目中,数据的格式...参考文献:《python文本分析》----Dipanjan Sarkar本文的主要内容:文本切分(句子切分和单词切分)...
  • 关于二进制文件与文本文件

    千次阅读 2017-03-16 21:59:03
    所谓的文本文件其实就是数据格式为字符型,用记事本就能打开的文件,它存储在计算机中以二进制的方式存储,当读出来的时候需要解码,仅仅按照单个字符来解码,用UTF-8还是unicode取决于用户设置的文本编码。...
  • 我正在Java的SO的帮助下从事此项目的工作,正在读取一个文件夹,然后将其内容写入文件。然后,我需要浏览该内容,仅保留末尾带有Thumbnail.jpg的图像。编辑:public static final File outFile = new File(System....
  • 一、选择题1有以下程序:程序运行后的输出结果是( )。A.1,6,2,1,B.8,7,3,1,C.4,7,5,2,D.1,6,5,7,参考答案:D参考解析:首先对二维数组进行赋值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值为l...
  • 振动论坛原版主eight的经典贴对于文本文件(txt)进行数据读取的技巧总结(经典中的经典)由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“----转----”标注,原作者略去,在此对所有原作者表示感谢!...
  • 数据挖掘-文本分析

    千次阅读 2019-08-27 22:05:02
    1.文本分析
  • 它使用Go实施的magic-wormhole(称为wormhole-william),并静态编译为单个二进制wormhole-gui Wormhole-gui是Magic-wormhole的跨平台图形界面,可让您轻松地在文件之间共享文件,文件夹和文本设备。 它使用Go实施的...
  • 文本处理

    千次阅读 2020-10-23 09:12:16
    所有类 Unix 的操作系统都非常依赖于用于几种数据类型存储的文本文件。所以这很有道理, 有许多用于处理文本的工具。在这一章中,我们将看一些用来“切割”文本的程序。在下一章中, 我们将查看更多的文本处理...
  • 只能直接“读取”和“理解”仅几种文件格式,例如纯原始.TXT文本文件.大多数文件格式(包括几乎所有二进制格式)都是..格式.这意味着文件中保留了某些结构.与完全没有结构的.TXT文本文件完全相反,或者说,它是一大块纯...
  • 文本特征提取方法研究

    万次阅读 2018-10-08 16:49:15
    文本挖掘就是从大量的文档中发现隐含知识和模式的一种方法和工具,它从数据挖掘发展而来,但与传统的数据挖掘又有许多不同。文本挖掘的对象是海量、异构、分布的文档(web);文档内容是人类所使用的自然语言,缺乏计算机...
  • html5 文本相关标签(基础三)

    千次阅读 2021-06-13 10:21:25
    html5 文本相关标签一、标题 h1、h1、hgroup(标题组)1、什么情况下使用标题?01.标题是概括性的简短文字02.标题能概括随后的内容2、主标题与副标题01.主标题02.副标题3、标题组 hgroup01.当主标题和副标题成组时,应...
  • 多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源... 这里通过两个例子介绍集算报表使用文本数据源制作报表的步骤,对于小文本文件和大文本文件在集算报表中可以采用不同的方式进行处理。 小文本文件
  • Matlab如何读取文本文件

    千次阅读 2016-09-29 00:00:02
    MATLAB对于文本文件(txt)进行数据读取的技巧总结(经典中的经典)由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“----转----”标注,原作者略去,在此对所有原作者表示感谢!  特别说明:由于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 200,548
精华内容 80,219
关键字:

以下什么被称为文本文件