Javaでファイル操作まとめ(FileInputStream編)
Advertisements
JavaではFileクラスを使ってローカルシステムにあるファイルをオブジェクトとして表現できる。
では、そのファイルを読み書きするにはどうしたらいいだろうか。
そこで使うのは、「ストリーム」である。
ストリームとは、データを読み書きできる性質のみを取り出した機能のこと。
Javaではファイルの読み書きをストリームに抽象化して扱う。
"あえて"データを先頭から順に読み出すことと、順に書き込むこと"だけ"しかできないようにしている。
なぜか。
それは、機能を「ストリーム」という抽象的な概念で扱うことで、
対象がファイルだろうとネットワークを経由したデータであろうと、メモリに対する書き込みだろうと、
全てストリームで扱えるからである。
ストリームでファイルを読み書きするのは次の3つの手順で実行される。
1.ストリームを開く
2.データが存在する限り読み取りor書き込みを継続する
3.ストリームを閉じる
package forBlog; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileReadAndWrite { public static void main(String[] args){ File inputFile = null; File outputFile = null; FileInputStream in = null; FileOutputStream out = null; try{ inputFile = new File("C:\\temp\\Javaでツイートまとめ.txt"); outputFile = new File("C:\\temp\\Javaでツイートまとめのコピー.txt"); in = new FileInputStream(inputFile); out = new FileOutputStream(outputFile); int c; //ファイル末尾まで読み込み。最後は-1を返す while((c = in.read()) != -1){ //inputファイルの内容を書き出す。 out.write(c); } }catch(FileNotFoundException e){ System.out.println("File not found!"); }catch(IOException e){ System.out.println("IO Exception!"); }finally{ try{ if(in != null){ in.close(); } if(out != null){ out.close(); } } catch(IOException e){ System.out.println("Close fail"); e.printStackTrace(); } } } }
この例を実行すると、
Javaでツイートまとめ.txt
ファイルと全く同じ内容の
Javaでツイートまとめのコピーテキスト.txt
が作成される。