使用循环检查现有文件

时间:2014-08-22 18:26:45

标签: java file loops while-loop

我想使用while循环检查现有文件。现在的问题是,如果使用这样的东西:

while (file.exists()) {
        text.setText("Some text appears");
        text.setTextColor(Color.RED);
}

我的程序似乎总是没有回应。是因为我的循环在某种程度上是一个无限循环?或者为什么不能正常工作。

现在,我正在使用一个简单的if statement但我不喜欢这样,因为当文件存在时它不会立即更新。

编辑: 我想要的是:  我提供了一个文件下载。在我的应用程序中,有一个文字显示"尚未提供"。我希望在文件存在之后立即将文本更改为"文件可用"。

4 个答案:

答案 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秒检查一次文件。

您可以在http://www.mkyong.com/java/jdk-timer-scheduler-example/

上找到更多信息

答案 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!

这是您程序中的特定屏幕吗?这个人是否能够退出这个"找到/未找到的文件"页?我可能会写一个片段,但我需要更多信息。 :)