【问题标题】:Java: BufferdWriter prints String into two lines for no reason?Java:BufferedWriter无缘无故将String打印成两行?
【发布时间】: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


【解决方案1】:

这是编码器,而不是BufferedWriter。 Base-64 编码使用(我相信)72 个字符的行长。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多