有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将整个输入文件转换为字符串?

在Java中,如何将整个输入文件转换成一个^{

换句话说,如果我有一个输入文件"test.in"

c++
java
python
test

然后我想创建一个String包含"c++javapythontest"

我想到了一些类似于

Scanner input = new Scanner(new File("test.in"));
while(input.hasNext()){
    String test = test + input.nextLine();
}

但这似乎不起作用
有没有一种有效的方法可以做到这一点


共 (2) 个答案

  1. # 1 楼答案

    要读取文件内容,请丢弃换行符:

    String contents = Files.lines(Paths.get("test.in")).collect(Collectors.joining());
    

    我认为您需要测试hasNextLine(),当您连接这样的字符串时,代码的性能会因为创建了太多对象而受到影响。如果您将代码更改为使用StringBuilder,它将运行得更快

  2. # 2 楼答案

    这段代码是对原始逻辑的一个小修改
    StringBuilder创建一个可变的字符序列,这意味着我们只需将内容附加到StringBuilder对象的值,而不是每次都创建一个新对象。

    在代码中String test = test + input.nextLine();while循环中
    因此,每次迭代while循环时都会创建新的String test对象,因此不会保存以前的值。

    String path = "test.txt";
    Scanner input = new Scanner(new File(path));
    StringBuilder sb = new StringBuilder();
    
    while (input.hasNext()) {
        sb.append(input.nextLine() + "\n");
    }
    System.out.println(sb.toString());