- 教程
- 概述
- 环境
- Basic 语法
- 数据类型
- 变量
- 运算符
- 模式匹配( Pattern Matching)
- 决策( Decision Making)
- Strings( Strings)
- Char Lists( Char Lists)
- 列表和元组( Lists and Tuples)
- 关键字列表( Keyword Lists)
- Maps
- 模块( Modules)
- 别名( Aliases)
- 功能( Functions)
- 递归
- 循环
- Enumerables( Enumerables)
- Streams( Streams)
- Structs( Structs)
- 协议 Protocols
- File I/O
- 进程( Processes)
- Sigils( Sigils)
- 理解( Comprehensions)
- Typespecs( Typespecs)
- 行为( Behaviours)
- 错误处理( Errors Handling)
- Macros( Macros)
- (库)Libraries
- 有用的资源
- 讨论
- Show 例子
- Show 例子
- Show 例子
- Show 例子
- Show 例子
- if statement
- if..else statement
- unless statement
- unless..else statement
- cond
- case
File I/O
文件IO是任何编程语言不可或缺的一部分,因为它允许语言与文件系统上的文件进行交互。 在本章中,我们将讨论两个模块 - 路径和文件。
路径模块
path模块是一个非常小的模块,可以被视为文件系统操作的辅助模块。 File模块中的大多数函数都将path作为参数。 最常见的是,这些路径将是常规二进制文件。 Path模块提供了处理此类路径的工具。 由于Path模块透明地处理不同的操作系统,因此首选使用Path模块中的函数而不是仅操作二进制文件。 可以看出,Elixir会在执行文件操作时自动将斜杠(/)转换为Windows上的反斜杠(\)。
让我们考虑以下示例来进一步了解Path模块 -
IO.puts(Path.join("foo", "bar"))
运行上述程序时,会产生以下结果 -
foo/bar
路径模块提供了许多方法。 您可以在here查看不同的方法。 如果要执行许多文件操作操作,则经常使用这些方法。
文件模块
文件模块包含允许我们将文件作为IO设备打开的功能。 默认情况下,文件以二进制模式打开,这要求开发人员使用IO模块中的特定IO.binread和IO.binwrite函数。 让我们创建一个名为newfile的文件并向其写入一些数据。
{:ok, file} = File.read("newfile", [:write])
# Pattern matching to store returned stream
IO.binwrite(file, "This will be written to the file")
如果您打开我们刚写入的文件,内容将以下列方式显示 -
This will be written to the file
现在让我们了解如何使用文件模块。
打开文件
要打开文件,我们可以使用以下两个功能中的任何一个 -
{:ok, file} = File.open("newfile")
file = File.open!("newfile")
现在让我们理解File.open函数和File.open!()函数之间的区别。
File.open函数始终返回一个元组。 如果文件成功打开,它会将元组中的第一个值返回为:ok ,第二个值是io_device类型的文字。 如果导致错误,它将返回具有第一个值的元组:error和第二个值作为原因。
另一方面,如果文件成功打开, File.open!()函数将返回io_device ,否则会引发错误。 注意:这是我们将要讨论的所有文件模块函数中遵循的模式。
我们还可以指定要打开此文件的模式。 要以只读和utf-8编码模式打开文件,我们使用以下代码 -
file = File.open!("newfile", [:read, :utf8])
写入文件
我们有两种方法可以写入文件。 让我们看一下使用File模块中的write函数的第一个。
File.write("newfile", "Hello")
但是,如果要对同一文件进行多次写入,则不应使用此方法。 每次调用此函数时,都会打开文件描述符,并生成一个新进程以写入该文件。 如果您在循环中进行多次写入,请通过File.open打开该文件,并使用IO模块中的方法写入该文件。 让我们考虑一个例子来理解相同的 -
#Open the file in read, write and utf8 modes.
file = File.open!("newfile_2", [:read, :utf8, :write])
#Write to this "io_device" using standard IO functions
IO.puts(file, "Random text")
您可以使用其他IO模块方法(如IO.write和IO.binwrite写入以io_device打开的文件。
从文件中读取
我们有两种方法可以从文件中读取。 让我们看一下使用File模块中的read函数的第一个。
IO.puts(File.read("newfile"))
运行此代码时,您应该获得一个元组,第一个元素为:ok ,第二个元素作为newfile的内容
我们也可以使用File.read! 函数只是获取返回给我们的文件的内容。
关闭打开的文件
每当使用File.open函数打开文件时,在使用完文件后,应使用File.close函数关闭它 -
File.close(file)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论