次の方法を使用して、バイト配列をテキスト ファイルに出力しています。
try{
FileOutputStream fos = new FileOutputStream(filePath+".8102");
fos.write(concatenatedIVCipherMAC);
fos.close();
}catch(Exception e)
{
e.printStackTrace();
}
UTF-16 でエンコードされたデータをファイルに出力します。例:
¢¬6î)ªÈP~m˜LïiƟê•Àe»/#Ó ö¹¥'þ²XhÃ&¼lG:Öé )GU3«´Dã{+í—ã]íò
ただし、読み返すとþÿ
、データの先頭に追加されます。たとえば、次のようになります。
þÿ¢¬6î)ªÈP~m˜LïiƟ㪕Àe»/?#Ó ö¹¥'þ²XhÃ&¼lG:Öé )GU3«´Dã{+í—ã]íò
これは、ファイルを読み取るために使用している方法です。
private String getFilesContents()
{
String fileContents = "";
Scanner sc = null;
try {
sc = new Scanner(file, "UTF-16");
System.out.println("Can read file: "+file.canRead());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while(sc.hasNextLine()){
fileContents += sc.nextLine();
}
sc.close();
return fileContents;
}
次にbyte[] contentsOfFile = fileContents.getBytes("UTF-16");
、文字列をバイト配列に変換します。
簡単なGoogleは、þÿはバイトオーダーを表すと私に言いましたが、それをそこに置いているのはJavaですか、それともWindowsですか? 読み込んでいるデータの先頭にþÿが追加されないようにするにはどうすればよいですか? 最初の 2 バイトだけを無視することを考えていましたが、それが Windows の場合、他のプラットフォームでは明らかにプログラムが壊れます。
編集: 追加を先頭に変更。