テキストファイルの読み込み
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class Main { public static void main(String[] args) { try { FileReader fr = new FileReader("C:/develop/test.txt"); int data; while ((data = fr.read()) != -1) { System.out.print((char) data); } fr.close(); } catch (IOException e) { e.printStackTrace(); } } } |
解説
data = fr.read()) != -1
FileReaderには、Stringを返すような文字列はありません。
なので、非常にめんどうですが、readメソッドを使って、ファイルの文字を一文字ずつ取り出す必要があります。
ただ、readの戻り値としてint型が返って来るので、処理する際は、char型にキャストしてあげる必要があります。
これは、終端まで言った際の印として、「-1」を返すようになっているのですが、char型ではそうした終端の数字を扱えないので、苦肉の策としてint型が返る仕様となってしまったようです。
テキストファイルの書き込み
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.io.FileWriter; import java.io.IOException; public class Main { public static void main(String[] args) { try { FileWriter fw = new FileWriter("c:/develop/test.txt",false); fw.write("Hello World"); fw.flush(); fw.close(); } catch (IOException e) { e.printStackTrace(); } } } |
解説
FileWriter fw = new FileWriter("c:/develop/test.txt",false);
FileWriterクラスをインスタンス化し、指定したファイルを開くことができます。
ファイルがある場合は、上書きし、ない場合は新規作成します。
なお、第二引数のfalseは、書き込む際は、必ず先頭から文字を書き込んでいくことになります。
fw.write("Hello World");
ファイルに対して、「Hello World」という文字列の書き込みを要求します。
しかし、すぐに書き込まれるわけでなく、一旦「バッファ」にためておき、後でまとめて書き込むことになります。
なので、必ずしもファイルに正しく書き込まれない可能性があるという点は注意です。
fw.flush();
閉じる前には、必ず書きましょう。これを書かないと、writeメソッドだけでは、正しくファイルに書き込まれない可能性があるためです。
JVMに対して、もし欠損している文字データがあれば、強制的に書き込んでくれという要求をするので、書き漏らしを防げます。
この記事へのコメントはありません。