📜  D编程-文件I / O

📅  最后修改于: 2020-11-04 05:17:22             🧑  作者: Mango


文件由std.stdio模块的File结构表示。文件表示字节序列,无论是文本文件还是二进制文件都没有关系。

D编程语言提供对高级功能的访问以及对存储设备上文件的低级调用(OS级别)。

在D中打开文件

程序开始运行时,标准输入和输出流stdin和stdout已经打开。它们准备好使用了。另一方面,必须首先通过指定文件名和所需的访问权限来打开文件。

File file = File(filepath, "mode");

在这里, filename是字符串字面量,您可以使用它来命名文件,访问模式可以具有以下值之一-

Sr.No. Mode & Description
1

r

Opens an existing text file for reading purpose.

2

w

Opens a text file for writing, if it does not exist then a new file is created. Here your program will start writing content from the beginning of the file.

3

a

Opens a text file for writing in appending mode, if it does not exist then a new file is created. Here your program will start appending content in the existing file content.

4

r+

Opens a text file for reading and writing both.

5

w+

Opens a text file for reading and writing both. It first truncate the file to zero length if it exists otherwise create the file if it does not exist.

6

a+

Opens a text file for reading and writing both. It creates the file if it does not exist. The reading will start from the beginning but writing can only be appended.

在D中关闭文件

要关闭文件,请使用file.close()函数,其中file包含文件引用。该函数的原型是-

file.close();

当程序使用完该文件后,必须关闭该程序打开的所有文件。在大多数情况下,不需要显式关闭文件。当文件对象终止时,它们将自动关闭。

用D写文件

file.writeln用于写入打开的文件。

file.writeln("hello"); 
import std.stdio; 
import std.file;
  
void main() { 
   File file = File("test.txt", "w"); 
   file.writeln("hello");
   file.close(); 
}

编译并执行上述代码后,它将在其下启动的目录(在程序工作目录中)创建一个新文件test.txt

在D中读取文件

以下方法从文件读取一行-

string s = file.readln();

读写的完整示例如下所示。

import std.stdio; 
import std.file; 
 
void main() { 
   File file = File("test.txt", "w");
   file.writeln("hello");  
   file.close(); 
   file = File("test.txt", "r"); 
   
   string s = file.readln(); 
   writeln(s);
   
   file.close(); 
} 

编译并执行上述代码后,它将读取上一部分中创建的文件,并产生以下结果-

hello

这是另一个读取文件直到文件结束的示例。

import std.stdio;
import std.string;

void main() { 
   File file = File("test.txt", "w");  
   file.writeln("hello"); 
   file.writeln("world");  
   file.close();  
   file = File("test.txt", "r"); 
    
   while (!file.eof()) { 
      string line = chomp(file.readln()); 
      writeln("line -", line); 
   }
} 

编译并执行上述代码后,它将读取上一部分中创建的文件,并产生以下结果-

line -hello 
line -world 
line -

您可以在上面的示例中看到第三行为空,因为执行一次writeln会将其移至下一行。