在我的应用程序中,我想创建一个文件夹(名为批处理),如果它在系统中不存在。如果存在则返回文件的引用对象。我不知道文件的路径。
File f=new File("batches");
if(!f.exists())
{
f.mkdir();
}
这将在根文件夹中创建一个目录,并在第二次执行时返回此目录。
答案 0 :(得分:0)
您可以检查所有连接的驱动器: Find all drive letters in Java
然后迭代所有目录(和子目录) How do I iterate through the files in a directory in Java?
然而,这将是一个非常漫长的过程。如果我们了解您的计划的目的,我们可以帮助您提供更优雅的解决方案。
答案 1 :(得分:0)
下面的代码在第一次执行代码时创建目录批次,下次打印时#34;已经存在"声明目录已经创建。
如果您在src
之外创建目录后已经执行了应用程序File f=new File("batches");
if(!f.exists())
{
f.mkdir();
}
else{
System.out.println("Already present!");
}
答案 2 :(得分:0)
也许这样的事情可以做到:
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.*;
import static java.nio.file.FileVisitResult.*;
public class GetBatchesDir {
public static class Finder extends SimpleFileVisitor<Path> {
private final PathMatcher matcher;
public Path pathFound=null;
Finder(String pattern) {
matcher = FileSystems.getDefault().getPathMatcher("glob:" + pattern);
}
boolean found(Path file) {
Path name = file.getFileName();
return (name != null && matcher.matches(name));
}
@Override
public FileVisitResult preVisitDirectory(Path dir,BasicFileAttributes attrs) {
if (found(dir)) {
pathFound=dir;
return TERMINATE;
}
else
return CONTINUE;
}
}
public static void main(String[] args) throws IOException {
Finder finder = new Finder("batches");
Files.walkFileTree(Paths.get("."), finder);
PrintWriter out;
if (finder.pathFound != null)
out=new PrintWriter(finder.pathFound.toString()+"/file.txt");
else {
new File("./batches").mkdir();
out=new PrintWriter("./batches/file.txt");
}
out.println("Hello");
out.close();
}
}
NIO通常过于雄心勃勃,但有很好的查找器功能,因此我们将其用于此,并为其余部分使用简单的文件。 我用过 ”。”作为文件系统的根,你可以找到更合适的东西。如果文件存在,磁盘已满,您还必须弄清楚要做什么等等。