当使用java.util.Scanner从文件中读取字符串并使用换行符作为分隔符时,字符串的行为异常

当使用java.util.Scanner从文件中读取字符串并使用换行符作为分隔符时,字符串的行为异常,java,java.util.scanner,delimiter,Java,Java.util.scanner,Delimiter,我尝试使用java.util.Scanner从文件中读取数据。当我尝试使用\n作为分隔符时,当我尝试向结果字符串添加更多文本时,结果字符串会做出奇怪的反应 我有一个名为“test.txt”的文件,并尝试从中读取数据。然后我想在每个字符串中添加更多的文本,类似于打印helloworld: String helloWorld = "Hello "+"World!"; System.out.println(helloWorld);. 我尝试将数据与+组合,我尝试了+=和String.concat()

我尝试使用
java.util.Scanner
从文件中读取数据。当我尝试使用
\n
作为分隔符时,当我尝试向结果字符串添加更多文本时,结果字符串会做出奇怪的反应

我有一个名为“test.txt”的文件,并尝试从中读取数据。然后我想在每个字符串中添加更多的文本,类似于打印
helloworld

String helloWorld = "Hello "+"World!";
System.out.println(helloWorld);.
我尝试将数据与
+
组合,我尝试了
+=
String.concat()

我还尝试使用不同的分隔符,或者根本不使用分隔符,这两种方法都可以正常工作,但我需要在换行符处分隔字符串

最小可复制示例的
test.txt
文件包含以下文本(每行末尾有一个空格):

零:
一:
二:
三:

void minimaleExample()引发异常{//如果找不到test.txt文件,则可能引发异常
字符串[]数据=新字符串[4];
java.io.File文件=新的java.io.File(“test.txt”);
java.util.Scanner Scanner=新的java.util.Scanner(文件).useDelimiter(“\n”);

对于(int i=0;i而言,
test.txt
最有可能使用Windows
\r\n
,这导致读取后仍存在于
字符串中


确保
test.txt
正在使用
\n
作为行删除器,或者在
扫描仪中使用Windows
\r\n
。useDelimiter()

test.txt
最有可能使用Windows
\r\n
,这导致读取后仍存在于
字符串中


确保
test.txt
正在使用
\n
作为行分隔符,或者在
扫描仪中使用Windows
\r\n
。使用分隔符()
最有可能的问题是分隔符错误。如果使用Windows 10,新的行分隔符是
\r\n


为了与平台无关,请使用
System.getProperty(“line.separator”)
而不是硬编码的
\n
最有可能的问题是分隔符错误。如果使用Windows 10,新的行分隔符是
\r\n


只是为了独立于平台使用
System.getProperty(“line.separator”)
而不是硬编码的
\n

您使用的是Windows还是MacOS?test.txt
的行尾序列是什么,是Linux
\n
还是其他什么?@KarolDowbecki我使用Windows 10,我相信build 1607。到目前为止,我一直使用
\n
进行换行操作,从来没有出现过任何问题。我在Linux,很好用。你用的是Windows还是MacOS?test.txt的行尾顺序是什么?是Linux
\n
还是别的什么?@KarolDowbecki我用的是Windows 10,我相信是build 1607。到目前为止,我一直用
\n
换行符,从来没有遇到过任何问题。我在Linux上运行过你的代码,它很好用我马上就要试试了
void minimalReproducibleExample() throws Exception {  //May throw an exception if the test.txt file can't be found

    String[] data = new String[4];

    java.io.File file = new java.io.File("test.txt");
    java.util.Scanner scanner = new java.util.Scanner(file).useDelimiter("\n");

    for (int i=0;i<4;i++) {
        data[i] = scanner.next();     //read the next line
        data[i] += i;                 //add a number at the end of the String
        System.out.println(data[i]);  //print the String with the number
    }

    scanner.close();
}