JAVAソースコードメモ(ファイル操作)
String CURRENT_DIR = new File(".").getAbsoluteFile().getParent();
現在ディレクトリのフルパスを取得する
String FILE_SEP = System.getProperty(“file.separator”);
パス区切り文字を取得する
これはシステム依存なので、
Windowsならバックスラッシュ(\)だし、
UNIX系ならスラッシュ(/)を得ることができる。
String LINE_SEP = System.getProperty(“line.separator”);
改行コードを取得する
これはシステム依存なので、
WindowsならCRLFだし
UNIX系ならLFを得ることができる。
File file = new File(“test.txt”);
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),“UTF-8”));
ファイルを読み込むための基本クラス
BufferedReaderのインスタンスを作成する基本方法
テキストファイルの場合は
・br.readLine()で1行分を読み込める
・while(br.ready())でEOFに到達するまでいい感じにループ
という操作で先頭から1行ずつ読み込んで処理していく方法が一般的だろう
brはfinallyブロックでちゃんとnull検査してcloseすること
BufferedReader br = null;
try{
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),“UTF-8”));
while(br.ready()) {
// 処理を記述
}
} catch(Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
br.close();
}
}
明示的にcloseを呼び出さなくても、
JAVAのプロセス完了時にBufferedReaderはcloseされるが、
closeしないまま大量のファイルを読み込むとエラーになる。(Exceptionが発生する)
ちゃんとcloseしておいたほうが良い
File file = new File(“test.txt”);
BufferedWriter bw = null;
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),“UTF-8”));
こっちは書き込み系。
bw.write(“aaa”);
でaaaをtest.txtに書き出す。
改行する場合はbw.writeln();
追記で書き込みたい場合はFileOutputStreamのコンストラクタの第二引数をtrueにする
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file,true),“UTF-8”));
↑のソースは(System.getProperty()を除いて)
java.ioパッケージのクラスを使ってるので
ソースコードの冒頭でjava.ioのimportが必要
import java.io.*;
本当は必要なクラスだけ並べるのがいいんだが
面倒なので個人的には毎回アスター