我有以下代码:
Scanner scanner = new Scanner (file);
while (scanner.hasNextLine()){
System.out.println ("Next line");
String line = scanner.nextLine();
}
首先,print语句从未执行过。我认为这很奇怪,因为该文件是一个大约2,000行的xml文件。对于踢,我尝试在初始化Scanner对象之前插入以下内容:
try{
Desktop.getDesktop().open(file);
} catch (Exception e){}
当我运行程序时,文件被打开并且print语句执行了2000次(意味着scanner.hasNextLine()工作)。我认为这是一个与权限相关的问题,因此注释掉了上面的代码,我尝试了:
file.setWritable(true);
file.setExecutable(true);
file.setReadable(true);
scanner.hasNextLine()返回不工作,并且从未执行过print语句。我做错了什么?
更新:
整个函数看起来像这样:
public void addToList (File file){
try{
file.setWritable(true);
file.setExecutable(true);
file.setReadable(true);
if (file.exists())
System.out.println("File exists");
Scanner scanner = new Scanner (file, "UTF-8");
int lineCount=0;
while (scanner.hasNextLine()){
System.out.println("Next line");
String line = scanner.nextLine();
}
}
catch (FileNotFoundException e){
System.err.println (e.getMessage());
}
}
其中file是绝对路径
答案 0 :(得分:0)
您使用了try
,但从未抓到任何内容,这可能是问题所在。当我添加一个catch并使用xml
文件运行此代码时,它工作正常:
public static void main(String[] args) {
addToList(new File("/Users/[YourName]/Desktop/[FileName].xml"));
}
public static void addToList (File file){
try{
file.setWritable(true);
file.setExecutable(true);
file.setReadable(true);
if (file.exists())
System.out.println("File exists");
Scanner scanner = new Scanner (file, "UTF-8");
int lineCount=0;
while (scanner.hasNextLine()){
System.out.println("Next line");
String line = scanner.nextLine();
}
} catch (Exception e) {
System.out.println(e);
}
}
答案 1 :(得分:-1)
您尚未打印过您的专线。在制作String line
并为其指定scanner.nextLine()
的值后,它将保持未使用状态。尝试打印这样的行:
System.out.println("Next line" + line);