14.2.1打开和关闭文件

从文件中读取数据时,必须先打开它进行读取,类似地,在写入文件时也必须打开它。这个fopen函数将apointer返回到可供读取或写入的打开文件。从打开的文件中读取或写入所有数据后,应关闭该文件。这个fclose函数执行此操作。以下代码说明了写入文件的基本模式,但在读取文件时使用了非常相似的模式。

filename=“myfile.txt”;fid=fopen(文件名,“w”);#在这里执行实际的I/O。。。fclose(fid);
 
: fid = fopen (name)
: fid = fopen (name, mode)
: fid = fopen (name, mode, arch)
: fid = fopen (name, mode, arch, encoding)
: [fid, msg] = fopen (…)
: fid_list = fopen ("all")
: [file, mode, arch, encoding] = fopen (fid)

打开一个文件进行低级I/O,或查询打开的文件和文件描述符。

的第一种形式fopen函数使用指定的模式(读写、只读等)、体系结构体解释(IEEE big-endian、IEEE little-endian等)和文件编码打开命名文件,并返回一个整数值,该整数值可用于以后引用该文件。如果发生错误,fid设置为−1,并且消息包含相应的系统错误消息。这个mode是一个一个或两个字符的字符串,用于指定是打开文件进行读取、写入还是同时打开文件。这个编码是具有avalid编码标识符的字符串。当从文件中读取或向文件中写入字符串时,将使用此编码。默认情况下,这是UTF-8。

的第二种形式fopen函数返回一个文件id的向量,该向量响应当前打开的所有文件,不包括stdin, 标准输出标准错误流。

的第三种形式fopen函数返回有关给定文件id的打开文件的信息。

例如

myfile=fopen(“splat.dat”,“r”,“ieee-le”);

打开文件splat.dat以供阅读。如有必要,将读取二进制数值,假设它们首先以最低有效位的IEEE格式存储,然后转换为本机表示。

打开一个已经打开的文件只需再次打开它并返回一个单独的文件id。多次打开一个文件不是错误,尽管通过几个不同的文件id写入同一个文件可能会返回意外的结果。

的可能值mode

r默认

打开一个文件进行读取。

w

打开一个文件进行写入。先前的内容将被丢弃。

打开或创建一个文件以在文件末尾进行写入。

r

打开现有文件进行读写操作。

w

打开一个文件进行读取或写入。前面的内容已放弃。

打开或创建一个文件,以便在文件末尾进行读取或写入。

附加一个t到模式字符串,以文本模式或b以二进制模式打开。在Windows系统上,文本模式的读取和写入会自动将换行符转换为系统的适当换行符(在Windows上为回车换行符)。未指定模式时的默认值为二进制。

此外,您可以附加z到模式字符串以打开agzipped文件进行读取或写入。若要成功执行此操作,还必须以二进制模式打开文件。

参数是一个字符串,指定文件的默认数据格式。的有效值

nativen默认

当前计算机的格式。

ieee beb

IEEE big-endian格式。

ieee lel

IEEE little-endian格式。

打开尚不存在的新文件时,权限将设置为0666 - 乌马斯克.

兼容性说明:Octave使用缓冲I/O打开文件。小的写入会累积,直到内部缓冲区填满,然后在一次操作中写入所有内容。这非常高效,并提高了性能。MATLAB但是,会使用刷新I/O打开文件,其中每个写入操作都会立即执行。如果写入数据后必须立即执行写入操作,则写入后应调用刷新缓冲区以刷新内部缓冲区。

详见: fclose, fgets, fgetl, fscanf, fread, fputs, fdisp, 格式化输出, 写入文件, fskipl, fseek, frewind, 位置函数, feof, 铁氧体, fclear, 刷新缓冲区, freport, 乌马斯克.

 
: status = fclose (fid)
: status = fclose ("all")

关闭文件描述符指定的文件fid.

如果成功,fclose返回0,否则返回-1。的第二种形式fclose调用关闭所有打开的文件,除了stdin, 标准输出, 标准错误,以及与gnuplot相关的任何FID。

详见: fopen, 刷新缓冲区, freport.

 
: tf = is_valid_file_id (fid)

如果返回truefid指的是打开的文件。

详见: freport, fopen.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号