Search…
ファイル操作
Vでは、ファイルを「プログラムからアクセス可能な任意のファイルオブジェクトの抽象化」としており、osライブラリと深く関連しています。

ファイルの読み込み

コンピュータサイエンスでは、ファイルの読み込みもさまざまな問題に取り組むうえで重要なタスクです。Vではネイティブのosライブラリで以下のように操作できます。
1
import os
2
3
fn main() {
4
mut fp := flag.new_flag_parser(os.args)
5
generator := fp.string('generator', '', 'generator name')
6
method := fp.string('method', '', 'generator method name')
7
path := './data/$generator/$method'
8
9
if os.file_exists(path) {
10
print_generator_sample(path)
11
} else {
12
println('File does not exist')
13
return
14
}
15
}
16
17
fn print_generator_sample(path string) {
18
contents := os.read_file(path.trim_space()) or {
19
println('Failed to open $path')
20
return
21
}
22
23
lines := contents.split_into_lines()
24
length := lines.len
25
26
print_random_element(lines, length)
27
}
28
29
fn print_random_element(lines []string, length int) {
30
rand.seed(time.now().uni)
31
32
println(lines[rand.next(length-1)])
33
}
Copied!

ファイルへの書き込み

Vではファイルの書き込みも読み出しと似ています。
1
import os
2
3
fn main() {
4
path := './data/file.txt'
5
text := 'Full text description.'
6
7
if contents := os.write_file(path, text) or {
8
println('Failed while creating file')
9
return
10
}
11
12
content_lines = read_file(path)
13
print(content_lines)
14
}
15
16
fn read_file(path string) {
17
contents := os.read_file(path.trim_space()) or {
18
println('Failed to open $path')
19
return
20
}
21
22
return contents.split_into_lines()
23
}
Copied!

演習

  1. 1.
    中身のあるファイルを1つ作成するVプログラムを書きましょう。
  2. 2.
    2つのファイルを読み込んでその中身を表示するVプログラムを書きましょう。
  3. 3.
    Vのosライブラリを読んで、動作や利用方法を理解してみましょう。
  4. 4.
    ネストしたJSON文字列をエンコードして結果を新しいファイルに書き出してみましょう。
Last modified 2yr ago