我想使用while循环检查现有文件。现在的问题是,如果使用这样的东西:
while (file.exists()) {
text.setText("Some text appears");
text.setTextColor(Color.RED);
}
我的程序似乎总是没有回应。是因为我的循环在某种程度上是一个无限循环?或者为什么不能正常工作。
现在,我正在使用一个简单的if statement
但我不喜欢这样,因为当文件存在时它不会立即更新。
编辑: 我想要的是: 我提供了一个文件下载。在我的应用程序中,有一个文字显示"尚未提供"。我希望在文件存在之后立即将文本更改为"文件可用"。
答案 0 :(得分:3)
如果要定期检查文件是否存在,则必须使用异步任务或计时器执行此操作。
TTimerTask task = new TimerTask() {
@Override
public void run() {
// Here you do whatever you want
}
};
Timer timer = new Timer();
timer.schedule(task, 0,30000);
这将每隔30秒检查一次文件。
上找到更多信息答案 1 :(得分:2)
如果文件存在,while
循环内的条件始终为true
,您的程序将进入无限循环。
您需要像这样检查:
File file = new File(subDir.getPath() + "somefile.txt");
boolean exists = file.exists();
if (!exists) {
// It returns false if File or directory does not exist
}
else
{
//Update here
}
如果你想在循环中检查它,那么试试这样:
while (true)
{
File file = new File(subDir.getPath() + "somefile.txt");
boolean exists = file.exists();
if (!exists) {
// It returns false if File or directory does not exist
return;
}
else
{
//Update here
}
}
答案 2 :(得分:1)
如果文件存在,那么它会弹出到while循环中并继续循环,因为文件存在,你必须在while循环中使文件不存在...
你要做的最好的事情就是让你的程序在没有while循环的情况下工作......就像你提到的IF函数一样,然后慢慢地实现(测试)一个新的函数(while循环)到等式中。 / p>
你需要在while循环中修复的是...文件进入循环时会发生什么,以及它如何退出循环。目前的情况是,它不存在,因为文件仍然存在。
答案 3 :(得分:0)
好的,所以每当对方检查文件时,如果文件不存在,程序是否退出?我的意思是你不能永远检查文件。我想你可以把它放在一个Thread中并在while循环中稍微等一下运行它但是开销...... sheesh!
这是您程序中的特定屏幕吗?这个人是否能够退出这个"找到/未找到的文件"页?我可能会写一个片段,但我需要更多信息。 :)