Slide 24 de 37

Arquivos

Escrevendo e lendo
proc main(): void {
	hive.file.makeDir("./out")
	hive.file.write("./out/report.txt", "concluído")
	hive.file.append("./out/report.txt", "\ne concluído outra vez")

	if hive.file.read("./out/report.txt") is Result.Ok(text) {
		echo text
	}
}
Perguntando sobre um arquivo
proc main(): void {
	hive.file.makeDir("./out")
	hive.file.write("./out/report.txt", "concluído")

	echo hive.file.exists("./out/report.txt")
	if hive.file.size("./out/report.txt") is Result.Ok(n) {
		echo n
	}
	if hive.file.list("./out") is Result.Ok(names) {
		echo names
	}
}
hive.file é acesso geral ao sistema de arquivos, para o que using não cobre. Conteúdos se movem como uma Str que guarda bytes em vez de texto validado, então um arquivo binário sobrevive intacto a uma ida e volta de leitura/escrita. read e lines trazem um arquivo para dentro, write e append o empurram para fora, e delete, copy e move fazem o que dizem; exists e size perguntam sem ler, e list e makeDir cobrem um diretório. Tudo que é falível responde com um Result<_, hive.file.FileError> cujo reason é uma tag curta: NotFound, Permission, Exists ou Io.