スキマハコ

わすれがちなスキマな事を詰め込んでいます。ITの他に暮らしについても書いています。

ファイルを一気に読む/暗号化

	File file = new File(path);
	BufferedReader br = new BufferedReader(new FileReader(file));
	String str;
	while ((str = br.readLine()) != null) {
		System.out.println(str);
	}

という手順でファイルを読み込むのはわかるんだけれど、これだと改行が取り除かれてしまう。(改行は除外されている)
復号化のファイルを取り込むときは、改行も暗号化によって生成されたもともと文字だった何かだから、改行がない=文字が欠けている→復号化できない
ということになりかねない…ので、全部読み込みたい。

	FileReader in = new FileReader(path);
	int i;
	char ch[] = new char[1000]; //配列数は適当
	if((i = in.read(ch,0,ch.length)) != -1) {
		System.out.println(ch);
	}
	//またはch配列にin.read()で-1になるまでひたすら読み込む	
	char ch0;
	//添え字は超えないとは思うんですが
	for (i=0;(ch0 = br.readLine()) != null;i++) {
		ch[i]=ch0;
	}
	System.out.println(ch);

ぐらいしか思い浮かばない…。しかしこれだとものすごーく面倒だし、無駄。(特に後者)
でもバッファに制限があるだろうから、ファイルを丸ごと読み込んで渡すよーっていう関数はないんだろうなあ…(ファイルを丸ごと読み込んで、バッファの容量を超えないことは保障されないから…)
効率がいいのはどうしたら?っていう論点になるのかな。