public void file(){
String fileName = "hello.txt";
fileName = FileBrowser.chooseFile(true);
//Open a file and store the information into the OurList
try
{
String s = "";
File file = new File(fileName);
FileReader inputFile = new FileReader(file);
while( inputFile.read() != -1)
{
System.out.println(inputFile.read());
System.out.println();
}
}
catch(Exception exception)
{
System.out.println("Not a real file. List is already built");
}
}
所以我在使用这段代码时遇到了麻烦。我想从文件中逐字逐字地读取,但现在它正在跳过其他所有文件。我知道它为什么跳过它,它在while循环中以及当我尝试打印时,但据我所知,没有另一种方法可以阻止FileReader然后制作它!= -1。我怎么能让它不跳过?
答案 0 :(得分:1)
你在循环中调用了read()两次,所以你没有看到每一个奇怪的角色。你需要将read()的结果存储在变量中,测试它为-1,如果是这样则中断,否则打印变量。
答案 1 :(得分:1)
int nextChar;
while( (nextChar = inputFile.read()) != -1)
{
System.out.println(nextChar);
System.out.println();
}
答案 2 :(得分:0)
使用此模式:
int value = inputFile.read();
while(value != -1)
{
System.out.println(value);
System.out.println();
value = inputFile.Read();
}
答案 3 :(得分:0)
正如您已经知道的那样,每个循环调用read()两次,这导致了问题。
以下是正确循环读取的一些常用方法:
我相信大多数人可以自己弄清楚的一种冗长而有效的方式是:
boolean continueToRead = true;
while(continueToRead) {
int nextChar = file.read();
if (nextChar != -1) {
....
} else { // nextChar == -1
continueToRead = false;
}
}
或使用break:
while(true) {
int nextChar = file.read();
if (nextChar == -1) {
break;
}
....
}
清洁模式:
int nextChar = file.read();
while (nextChar != -1) {
....
nextChar = file.read();
}
或
while ((nextChar = file.read()) != -1) {
....
}
我更喜欢使用for循环:
for (int nextChar = file.read(); nextChar != 1; nextChar = file.read()) {
....
}