【问题标题】:Check for existing file with a loop使用循环检查现有文件
【发布时间】:2014-08-22 18:26:45
【问题描述】:

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

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

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

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

编辑: 我想要的是: 我提供一个文件下载。在我的应用程序中,有一条文字显示“尚不可用”。我想在文件存在后立即将文本更改为“文件可用”。

【问题讨论】:

  • 是的,这是一个无限循环。它不断检查一个始终为真的条件,因此它永远不会存在循环。你想做什么?
  • 您需要在循环中更改文件对象。在您的情况下,您曾经要求相同的文件!
  • 如果您准确描述您正在尝试做什么并发布您正在使用的代码,这将有所帮助。
  • 你在检查文件是否存在,为什么不检查文件是否不存在

标签: java file loops while-loop


【解决方案1】:

如果您想定期检查文件是否存在,您必须使用异步任务或计时器来执行此操作。

    TTimerTask task = new TimerTask() {

        @Override
        public void run() {
            // Here you do whatever you want
        }
    };

    Timer timer = new Timer();
    timer.schedule(task, 0,30000);

这将每三十秒检查一次文件。

您可以在http://www.mkyong.com/java/jdk-timer-scheduler-example/找到更多信息

【讨论】:

  • 目前很难判断这是否是 OP 的意图。尽管如此,我也会考虑WatchService。
  • OP 说他想检查文件何时可用并更改文本......所以,我想这就是他需要的。当然,还有其他可能的解决方案。
  • 但这就是他所说的,他想将“不可用尚未”更改为“可用”。我认为时间至关重要。
  • 我没有阅读问题的编辑文本。你是对的。
  • @EdwinDalorzo 您指向 [WatchService][docs.oracle.com/javase/tutorial/essential/io/notification.html] 的指针比所有答案加起来更有价值。事件/通知是要走的路,而不是轮询。
【解决方案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
  }
}

【讨论】:

    【解决方案3】:

    如果文件存在,那么它会弹出到 while 循环并继续循环,因为文件存在,你必须使文件在 while 循环中不存在...

    对你来说最好的事情是让你的程序在没有 while 循环的情况下工作......正如你提到的 IF 函数,然后随着时间的推移慢慢地在方程中实现(测试)一个新函数(while 循环)。

    您需要在 while 循环中解决的问题是...当文件进入循环时会发生什么以及它如何退出循环。目前的立场是,它不存在,因为文件仍然存在。

    【讨论】:

      【解决方案4】:

      好的,所以每当其他人检查文件时,如果文件不存在,程序是否会退出?我的意思是你不能让它永远检查文件。我想你可以把它放在一个线程中,然后在 while 循环中稍等片刻运行它,但是开销……哎呀!

      这是您程序中的特定屏幕吗?该人是否可以退出此“找到/未找到文件”页面?我可能会写一个 sn-p 但我需要更多信息。 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-03
        • 2016-02-13
        • 2021-01-10
        相关资源
        最近更新 更多