ファイルを読み込むには
テキストファイルを読み込む基本形を各言語で示す。
文字化けを避けるエンコーディング指定までを扱う。
公開: 更新:
各言語見出しの横のバッジは検証状態を表す。実行確認済みはコードを実際に実行して確認したもの、静的確認は構文と公式 API ドキュメントで確認したものである。
Python 実行確認済み
with open("a.txt", encoding="utf-8") as f:
s = f.read()with 文を使うとブロックを抜けた時点でファイルが自動的に閉じられ、クローズ漏れを防げる。
encoding は環境によって既定値が変わるため明示する。
JavaScript 実行確認済み
import { readFile } from "node:fs/promises";
const s = await readFile("a.txt", "utf8");Node.js の fs/promises を使う書き方で、ブラウザでは動かない。
第2引数にエンコーディングを渡すと Buffer ではなく文字列が返る。
TypeScript 実行確認済み
import { readFile } from "node:fs/promises";
const s: string = await readFile("a.txt", "utf8");書き方は JavaScript と同じで、戻り値に型注釈を付けられる点だけが異なる。
Go 静的確認
data, err := os.ReadFile("a.txt")
if err != nil {
log.Fatal(err)
}
s := string(data)os.ReadFile はファイル全体を一括で読み込み []byte を返す。
文字列として扱うときは string() で変換する。
巨大なファイルでは bufio.Scanner による逐次読み込みを検討する。
Rust 静的確認
use std::fs;
let s = fs::read_to_string("a.txt")?;fs::read_to_string はファイル全体を String として読み込む。
? 演算子は Result のエラーを呼び出し元へ伝播するため、関数の戻り値を Result にしておく必要がある。
Java 静的確認
import java.nio.file.*;
String s = Files.readString(Path.of("a.txt"));Files.readString は Java 11 以降で使え、ファイル全体を UTF-8 の String として読み込む。
それ以前のバージョンでは Files.readAllBytes と new String を組み合わせる。
C# 静的確認
using System.IO;
using System.Text;
string s = File.ReadAllText("a.txt", Encoding.UTF8);File.ReadAllText はファイル全体を読み込んで文字列として返す。
エンコーディングを省略すると UTF-8 として扱われるが、意図を明示するために引数で渡しておくと環境差で迷わない。
つまずき
日本語ファイルが文字化けする場合は、まずエンコーディングの明示を疑う。
既定値が OS や実行環境で異なるため、utf-8 を明示するだけで解決することが多い。
詳細は各言語の「うまくいかない時」リンクを参照。