当前位置: 首页 > 知识库问答 >
问题:

正在文件[已关闭]末尾添加一行额外内容

索曾琪
2023-03-14

将数据写入字符串生成器的逻辑,在迭代由于追加(\n)的最后一条记录后,添加了一个我不需要的新空行。

       public static void main(String[] args) {
            for(int i=0;i<5;i++){
            StringBuilder d = new StringBuilder();
            d.append("sampledata")
            .append("\n");
            System.out.print(d);
        }
      writeFile(d,filePath);
    }

共有3个答案

尚俊楠
2023-03-14

您可以在最后一次迭代中使用if条件。

 public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
      StringBuilder d = new StringBuilder();
      d.append("sampledata");
      if (i == 4) {
        break;
      } else {

        d.append("\n");
      }
      System.out.print(d);
    }

  }

输出将是

sampledata
sampledata
sampledata
sampledata
柳胡媚
2023-03-14

文件末尾的“空行”实际上不是空行。如下图所示,此处的文件大小为零字节。为了在文件中存在一行,它必须以两个字节的CR LF终止,或者。。。文本需要添加我们的无行终止。如果未添加行终止符,则该“空行”实际上为空,接下来是EOF。

如果您使用任何文件读取器的实现,readLine()函数将只抓取API中指示的终止行:

在这段代码中,没有在末尾添加额外的行。代码所做的唯一一件事就是向行中添加行终止字符。通过检查以下条件,可以防止终止最后一行:

int LOOP_MAX = 5;
for (int i = 0; i < LOOP_MAX; i++) {
    StringBuilder d = new StringBuilder();
    d.append("sampledata");
    if (i != LOOP_MAX -1) {
        d.append("\n");
    }
    System.out.print(d);
}

无论是否检查此条件,行数都将相同。唯一的区别是最后一行是使用CR LF还是仅使用EOF终止。这就是全部。

通建安
2023-03-14

您必须使用trim()函数从StringBuilder中删除最后一个空格。

class Main {
    public static void main(String[] args) {
        for(int i = 0; i < 5; i++){
            StringBuilder d = new StringBuilder();
            d.append("sampledata");
            if(i == 4)
            {
                d.toString().trim();
            }
            else
            {
                d.append("\n");
            }
            System.out.print(d);
        }
    }
}
 类似资料:
  • 将数据写入字符串生成器的逻辑,在由于append(“\n”)而迭代最后一条记录之后,将添加一个我不需要的新空行。

  • 我正在使用Goland来编写我的grpc应用程序。生成我的原型文件后,文件末尾不存在尾随换行符。有没有办法在 IDE 中启用此功能?

  • 问题内容: 我正在尝试提供获取JSON或XML响应的选项。 JSON可以正常工作,但是当我查看XML时,出现错误。 http://lmsapi.com/?api_key=fba9e59d7af86b239e82581780ff987e&format=json http://lmsapi.com/?api_key=fba9e59d7af86b239e82581780ff987e&format=xml

  • 问题内容: 我有一个文本区域,其中包含一些文本,我想再次向其中添加一些行(第一行+我要添加的其他行),但是它不起作用。 我现在的操作方式将擦除旧文本并仅显示新行。 问题答案: 代替使用,使用。 将给定的文本追加到文档末尾。如果模型为null或字符串为null或为空,则不执行任何操作。 这会将文字添加到您的末尾。 另一个选择是使用来从中获取文本,然后操作String(添加或删除或更改String),

  • 我有一个基于泽西(1. x)的REST服务。它使用Jackson 2.4.4生成JSON响应。我需要在响应的末尾添加一个换行符(cURL用户抱怨响应中没有新行)。我使用泽西漂亮打印功能()。 当前: 通缉: > 我尝试使用自定义序列化程序。我只需要在根对象的末尾添加。序列化器是按数据类型定义的,这意味着,如果此类类的实例嵌套在响应中,我将在JSON的中间获得。 我想到了子类化,覆盖,在其中我将添加

  • 问题内容: 与其他语言(例如或)的解释器类似,如何指示在脚本结尾处终止? 跟随命令 带脚本 版画 并等待其他命令。我希望它在文件末尾立即停止。 我正在寻找比脚本结尾更优雅的内容。 问题答案: 在脚本内部,使用jshell命令。这将在脚本末尾退出jshell。 检查此参考https://docs.oracle.com/javase/9​​/jshell/introduction-jshell.htm