【发布时间】:2016-03-31 18:48:45
【问题描述】:
我目前正在用 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;
}
【问题讨论】:
-
你用什么库来做base64编码?
Base64不是 Java 8 中内置的 base64 编码器。
标签: java string bufferedwriter