下面显示的代码应从文本文件中单独读取每一行,将当前行存储到String fileLine中,然后打印出fileLine的内容
当文本文件仅包含one行时,代码将按照描述的那样执行以打印行。但是,当文本文件有多于一行时,'while(sc.hasNextLine())语句将被完全跳过,这使我抓狂,因为我使用了与此类似的版本读取同一项目中其他文本文件的代码。
private File stockFile = new File(stockFilePath);
public void fetchCurrentStock() throws FileNotFoundException {
Scanner sc = new Scanner(stockFile);
String fileLine = "";
//Name\tPrice\tDescription\tSupplierName\tItemImagePath\tItem_ID\tQuantity
while(sc.hasNextLine()){
fileLine = sc.nextLine();
System.out.println(fileLine);
}
}
Samsung Galaxy S20+ 999 Samsung's latest & greatest PhonesHub null 001 20
Samsung Galaxy A10 130 Capture clear photos, in any light. Watch, play and browse more on the 6.2 inch HD+ display. PhonesHub null 002 25
Samsung Galaxy S10 750 Last years base flagship model, great power at a respectable price. PhonesHub null 003 30
Huawei P30 380 Take your photography to the next level with the P30’s triple camera & 6.1 inch display. PhonesHub null 004 15
更新:似乎文本文件中每行的文本较少时,Scanner.nextLine()会按预期运行。也许在这里不能使用Scanner类?
IntelliJ IDE的当前版本(或更可能是我的配置)的问题。运行调试工具进行调查时,while循环将立即返回false。
将项目导入Eclipse后,代码按预期运行。我也可以将项目的IntelliJ版本构建到JAR中,并且可以按预期运行,因此这是我目前的解决方法。