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。

相关推荐
极客智造2 天前
C++ 标准 IO 流全详解:cin /cout/get /getline 原理、用法、区别与避坑
c++·io
棉猴2 天前
Python海龟绘图之绘制文本
javascript·python·html·write·turtle·海龟绘图·输出文本
念越7 天前
Java 文件操作与IO流详解(File类 + 字节流 + 字符流全总结)
java·开发语言·io
Irene199110 天前
使用Python进行文件读写的API或方法及其注意事项
python·文件读写
心态与习惯12 天前
Julia 初探,及与 C++,Java,Python 的比较
java·c++·python·julia·比较
zl_dfq13 天前
计算机网络 之【高级IO】(IO模型、select\poll\epoll)
io
ShineWinsu23 天前
对于Linux:文件操作以及文件IO的解析
linux·c++·面试·笔试·io·shell·文件操作
爱码驱动1 个月前
文件操作和IO
java·开发语言·io·文件操作
七夜zippoe1 个月前
OpenClaw 文件操作详解:从基础到实战
大数据·人工智能·文件操作·read·openclaw
日拱一卒的小田1 个月前
ZYNQ学习笔记1-裸机-PS端中断配置、IO配置及PS/PL AXI交互
io·zynq·中断