Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
108 lines (74 sloc) 2.89 KB

练习10. 读写文本

在练习10里,我们做一点实战,大概会包括这样一些事情

  • 打开一个实现准备好的文本文件,叫做readme.txt
  • 如果里面有点什么文字,我们都抹掉
  • 写入一些我们想要写进去的内容
  • 用不同的方式把刚才写进去的内容打印出来

开始实战了

创建一个叫做readFile.io的文件,跟readme.txt放在同一个目录下,开始在readFile.io中输入下面的内容,一边输入一边尝试理解我们在做什么,因为我增加了一些注释,不理解依然没有关系,坚持输入。

f := File with("readme.txt") // 读取readme.txt里的内容,并把内容放到一个叫做f的容器里

f remove // 移除原内容

f openForUpdating // 以updating的方式打开,就可以更新这个文件
c := """你好,我来写入一些中文
还有 English
这是第三行
""" asUTF8 // 改变中文编码,以便正常写入及显示
f write(c) // 把一段中文写进入
f close // 关闭文件

"\n****循环读取****\n" println
f openForReading
f foreachLine(i, v, writeln("Line ", i, ": ", v))
f close 

"\n****从第一行读起,每次一行****\n" println
f openForReading
f readLine println // 每次只读一行
f readLine println
f close 

"\n****只输出第二行****\n" println
f openForReading
s := List clone
s := f readLines // 直接 f at(1) 会返回 byte
s at(1) println
f close

"\n****读取全部内容****\n" println
f contents println // 读取内容

运行readFile.io,你应该可以看到

> io readFile.io
****循环读取****

Line 0: 你好,我来写入一些中文
Line 1: 还有 English
Line 2: 这是第三行

****从第一行读起,每次一行****

你好,我来写入一些中文
还有 English

****只输出第二行****

还有 English

****读取全部内容****

你好,我来写入一些中文
还有 English
这是第三行

再打开readme.txt,应该会看到

你好,我来写入一些中文
还有 English
这是第三行

这段代码包含了非常丰富的信息,让我们一一说明:

首先,是openForUpdating 这样的东西,它是io语言内置的一些方法,想用好io语言,这是需要以后熟练掌握的内容,你可以在io语言的手册里找到它们

小知识:骆驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时**,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,**例如:myFirstName、myLastName

然后,用到了 for 循环,后面的练习会单独聊

再次,还用到 List 列表这个特殊的数据结构,后面的练习也会单独聊

一点其他的尝试

尝试在代码中去除一些东西,看看会得到什么?

  1. 去除
f remove // 移除原内容
  1. 保留上面的一行,去除
 asUTF8