gpt4 book ai didi

java - 如何等待只有固定的 "*.txt"扩展名的文件?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:08:36 25 4
gpt4 key购买 nike

我正在为非常基本的问题而苦苦挣扎,请看一看:

其他一些进程创建了一个名称未知但扩展名为 .txt 的文件(只有一个)。这个创建可能需要一段时间,所以我写了一个等待这个文件的循环,当找到文件时它会中断。问题是 - 如何将未知值传递给字符串?我想可以用正则表达式来完成。

此外,我还尝试过: Java: Find .txt files in specified folder但在我看来,有一种更好的方法可以针对我的情况应用不同的解决方案。

代码:

import java.io.File;

public class Test {

public static void waitForFile() throws InterruptedException{
while(true){
File f = new File("C:\\Test\\strangeName.txt");
if(f.exists()){
System.out.println("File is available now! End of the program");
break;
}
System.out.println("File still does not exist.");
Thread.sleep(5000);
}
}
public static void main(String[]args) throws InterruptedException{
waitForFile();
}
}

我想要一个像这样运行的代码:

File f = new File("C:\\Test\\*.txt");    

非常感谢任何提示!

这个问题的解决方案

感谢@JordiCastilla,我在下面创建了一个代码。再次非常感谢:)

import java.io.File;
import java.io.FileFilter;

class TextFileFilter implements FileFilter{

private String fileExtension = "txt";

@Override
public boolean accept(File file) {
if(file.getName().toLowerCase().endsWith(fileExtension)){
return true;
}
return false;
}
}

public class Test {

public static String waitForFileAndGetName() throws InterruptedException{

TextFileFilter tff = new TextFileFilter();
File f = new File("C:\\Users\\502532974\\Desktop\\Tescior");
int i = 1;
while(true){

File[] files = f.listFiles(tff);
if(files.length > 0){
System.out.println("File is available now! End of the program.");
return f.listFiles(tff)[0].getName();
}
System.out.println("File still does not exist. Iteration number "+i);
Thread.sleep(5000);
i++;
}
}


public static void main(String[]args) throws InterruptedException{
System.out.println("File name is="+waitForFileAndGetName());
}
}

最佳答案

我建议使用 java.nio.file 中的 WatchService:https://docs.oracle.com/javase/tutorial/essential/io/notification.html

然后您可以过滤 txt 扩展名的结果。

关于java - 如何等待只有固定的 "*.txt"扩展名的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com