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