我正在使用以下方法将字节数组输出到文本文件:
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?如何避免在我正在读取的数据开头添加 þÿ?我想忽略前两个字节,但如果是 Windows,那么这显然会破坏其他平台上的程序。
编辑:将附加更改为前置。