当使用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();
}