Java 无法使用扫描仪读取文件,无法进入循环
我试图读取一个文本文件,以便将它的某些部分复制到一个新的文本文件中 以下是我创建扫描仪项目的方式:Java 无法使用扫描仪读取文件,无法进入循环,java,file,text,Java,File,Text,我试图读取一个文本文件,以便将它的某些部分复制到一个新的文本文件中 以下是我创建扫描仪项目的方式: // folder File vMainFolder = new File(System.getProperty("user.home"),"LightDic"); if (!vMainFolder.exists() & !vMainFolder.mkdirs()) { System.out.println("Missing LightDic folder."); return;
// folder
File vMainFolder = new File(System.getProperty("user.home"),"LightDic");
if (!vMainFolder.exists() & !vMainFolder.mkdirs()) {
System.out.println("Missing LightDic folder.");
return;
}
// file
System.out.println("Enter the source file's name : ");
Scanner vSc = new Scanner(System.in);
String vNomSource = vSc.next();
Scanner vSource;
try {
vSource = new Scanner(new File(vMainFolder, vNomSource+".txt"));
} catch (final java.io.FileNotFoundException pExp) {
System.out.println("Dictionnary not found.");
return;
}
我就是这样写我的while结构的:
while (vSource.hasNextLine()) {
System.out.println("test : entering the loop");
String vMot = vSource.nextLine(); /* edit : I added this statement, which I've forgotten in my previous post */
}
执行程序时,它从不打印“测试:进入循环”
当然,我正在测试的这个文件不是空的,它是这样一个单词列表:
a
à
abaissa
abaissable
abaissables
abaissai
我不明白我做错了什么,过去我用过几次这种方法。问题解决了
我真的不知道为什么,但我解决了将我的FRdic.txt
文件的编码从ANSI
更改为UTF-8
的问题,然后读取了该文件
感谢所有试图帮助我的人
JVM不读取
ANSI
中编码的文本文件是否正常?文件名是什么?它在~/LightDic/
目录中吗?你看到它输出的东西了吗?什么是System.out.println(新文件(vMainFolder,vnosource+“.txt”).getAbsolutePath()代码>为您打印?不相关,但您是否在Java代码中使用类似的内容?我想知道变量开头的v是什么意思,我猜它代表变量。无论如何,在Java中使用这种表示法并不常见,它只会使可读性变得更差,而(vSource.hasnetline()){…}将生成一个无限循环。每次通过循环时,您都需要实际使用一些文本来推进扫描仪的指针。我想你已经确认你进入了while循环,对吧?所以问题是,为什么vSource.hasNextLine()会阻塞或返回false?最明显的可能性是vMainFolder没有指向您认为的位置。我建议您使用System.out.println(新文件(vMainFolder,vNomSource+“.txt”).getAbsolutePath();正如jlordo所建议的,在进入while循环之前,Java默认使用Unicode。如果您的ANSI
文件不符合这两种字符编码的公共片段,那么将其作为Unicode读取可能会导致JVM将换行符作为另一个字符的第二个字节java.io.InputStreamReader
提供了显式设置字符编码的方法。