Julia文件读写函数:write和read

文章目录

初步认识

Julia提供了异常便捷的文件读写函数,read和write,例如,下面的代码用write将字符串写入到tiny.txt文件中,然后用read将tiny.txt的内容以字符串的形式读取到变量a中,然后输出a,其内容正是我们写入的tiny cool。

matlab 复制代码
> write("tiny.txt", "tiny cool");
> a = read("tiny.txt", String);
> a
"tiny cool"

write还支持多组数据写入,所以下面的语句也是合法的,其写入的文件内容为tinycool。

matlab 复制代码
> write("tiny.txt", "tiny", "cool");

函数详解

Julia对这两个函数提供了多种重载方法,首先这两个函数的第一个参数,既可以是字符串表示的路径,也可以是IO或者IOStream类型。而write的第二个参数,就是想要写入的数据,Julia会自动识别数据类型,如果是字符串就存为文本格式,否则一般是按照二进制形式存储。

read相对来说稍显复杂,其第二个参数有下面几种情况:

  • 数据类型,例如上面示例中,把tiny.txt这个文件读取为String格式
  • 缺省,表示以二进制形式读取数据
  • 整数nb,表示读取nb个字节的数据

IO类型,即输入输出类型,是Julia中的一种数据结构,例如例如stdout表示标准输出,stdin表示标准输入,read可以从标准输入读取数据,而write可以将数据写入标准输出,效果如下

matlab 复制代码
> write(stdout, "hello world")
hello world
> a = read(stdin, Char)
x
> a
'x': ASCII/Unicode U+0078 (category Ll: Letter, lowercase)

其中x是手动输入的,需要注意,如果想从标准输入读取数据,那么数据类型不能是字符串,因为字符串是无限长的,会陷入死循环。

read!

在Julia中,普通函数并不会改变输入参数的值,所以read函数只能把读取到的数据作为返回值,传给另一个参数。但返回值的数据类型往往不确定,所以必须要添加一个数据类型参数,相对来说比较繁琐。

相比之下,read!有了!的加持,就可以实现对输入参数的更改,从而可以直接将文件内容写入数组

matlab 复制代码
> write("a.bin", ones(Int, 5, 5));
> x = zeros(UInt8, 8);
> read!("a.bin", x);
> x
8-element Vector{UInt8}:
 0x01
 0x00
 0x00
 0x00
 0x00
 0x00
 0x00
 0x00

其中,write把64位整形 5 × 5 5\times5 5×5的矩阵写入a.bin文件。

然后把x定义为8位无符号整型的数组,其长度为8。

接下来通过read!函数,将a.bin文件中的内容写入x,由于x的数据类型是8位无符号整型,所以64位整型的1在读取之后,被拆分成8个UInt8数据,出了第一个是1之外,剩下都是0。

相关推荐
JosieBook8 天前
【C#语言】C#文件操作实战:动态路径处理与安全写入
开发语言·c#·io
ツ箫声断丶何处莫凭栏9021 个月前
IO的概念和标准IO函数
汇编·c#·io
无问8171 个月前
Javaee:IO和文件操作
java-ee·io·文件操作
new6669991 个月前
BIO、NIO、AIO解析
java·io
fly spider2 个月前
每日 Java 面试题分享【第 20 天】
java·开发语言·面试·io
codingexpert4042 个月前
使用 Julia Distributions.jl 进行概率分布处理
开发语言·概率论·julia
codingexpert4042 个月前
Julia 之 @btime 精准测量详解
开发语言·julia
BlackPercy2 个月前
【线性代数】基础版本的高斯消元法
线性代数·julia
x66ccff3 个月前
️ 如何将 Julia 包切换为本地开发版本?以 Reactant 为例
linux·服务器·julia
KevinRay_3 个月前
Numpy指南:解锁Python多维数组与矩阵运算(下)
python·矩阵·numpy·排序·文件读写