Java: BufferdWriter无缘无故把String打印成两行?
Java: BufferdWriter prints String into two lines for no reason?
我目前正在 Java 中编写“文本检查”程序,但不知何故,我在为每个文件创建唯一标识符时遇到了困难。
实际上我是这样创建一个新标识符的:
String identifier = Base64.encode((dateFormat.format(date) + "#" + uuid.toString() + "#" + name+".sc0").getBytes()).replace("=", "");
我的程序还创建了一个新文件并打开了一个 BufferedWriter。
实际上,当我现在尝试附加时(我也尝试使用 BufferedWriter#write
,但它也没有用。)
如果我现在将这个字符串写入文件,它看起来像这样:
BlMjAxNi8wMy8zMSAyMDo0MjowOSMzMThhYjRkNS0yNjFhLTQwNjItODkyOS03NzlkZDIyOWY4Nj
dGVzdC5zYzA
但它应该像这样只有一行:
BlMjAxNi8wMy8zMSAyMDo0MjowOSMzMThhYjRkNS0yNjFhLTQwNjItODkyOS03NzlkZDIyOWY4NjdGVzdC5zYzA
起初我认为我在使用 BufferedWriter#write
后创建一个新行可能会有问题,所以我尝试在创建一个新行之前刷新我的 BufferedWriter。也没用...
PS:
完整的必要代码:
String name = file.getName().substring(0, ind);
File next = new File(folder.getAbsolutePath(), name+".sc0");
String identifier = Base64.encode((dateFormat.format(date) + "#" + uuid.toString() + "#" + name+".sc0").getBytes()).replace("=", "");
try {
next.delete();
next.createNewFile();
BufferedWriter writer = new BufferedWriter(new FileWriter(next));
logger.info("Adding compiler identifier to file ...");
writer.write("#Script0:"+identifier);
writer.flush();
writer.newLine();
for(String str : lines) {
writer.newLine();
writer.append(str);
}
writer.flush();
writer.close();
} catch (IOException e) {
logger.error("Strange bug ... Did you delete the file? Please try again!");
return;
}
是编码器,不是BufferedWriter
。 Base-64 编码使用(我相信)72 个字符的行长度。
我目前正在 Java 中编写“文本检查”程序,但不知何故,我在为每个文件创建唯一标识符时遇到了困难。
实际上我是这样创建一个新标识符的:
String identifier = Base64.encode((dateFormat.format(date) + "#" + uuid.toString() + "#" + name+".sc0").getBytes()).replace("=", "");
我的程序还创建了一个新文件并打开了一个 BufferedWriter。
实际上,当我现在尝试附加时(我也尝试使用 BufferedWriter#write
,但它也没有用。)
如果我现在将这个字符串写入文件,它看起来像这样:
BlMjAxNi8wMy8zMSAyMDo0MjowOSMzMThhYjRkNS0yNjFhLTQwNjItODkyOS03NzlkZDIyOWY4Nj
dGVzdC5zYzA
但它应该像这样只有一行:
BlMjAxNi8wMy8zMSAyMDo0MjowOSMzMThhYjRkNS0yNjFhLTQwNjItODkyOS03NzlkZDIyOWY4NjdGVzdC5zYzA
起初我认为我在使用 BufferedWriter#write
后创建一个新行可能会有问题,所以我尝试在创建一个新行之前刷新我的 BufferedWriter。也没用...
PS: 完整的必要代码:
String name = file.getName().substring(0, ind);
File next = new File(folder.getAbsolutePath(), name+".sc0");
String identifier = Base64.encode((dateFormat.format(date) + "#" + uuid.toString() + "#" + name+".sc0").getBytes()).replace("=", "");
try {
next.delete();
next.createNewFile();
BufferedWriter writer = new BufferedWriter(new FileWriter(next));
logger.info("Adding compiler identifier to file ...");
writer.write("#Script0:"+identifier);
writer.flush();
writer.newLine();
for(String str : lines) {
writer.newLine();
writer.append(str);
}
writer.flush();
writer.close();
} catch (IOException e) {
logger.error("Strange bug ... Did you delete the file? Please try again!");
return;
}
是编码器,不是BufferedWriter
。 Base-64 编码使用(我相信)72 个字符的行长度。