Java 从指定的相对路径迭代目录中的所有文件
我希望使用这种“相对”路径,因为我希望能够将此目录中的所有文件都包含在github项目中,其他人可以下载并运行该项目 所以我只想在结构中跳一次Java 从指定的相对路径迭代目录中的所有文件,java,relative-path,Java,Relative Path,我希望使用这种“相对”路径,因为我希望能够将此目录中的所有文件都包含在github项目中,其他人可以下载并运行该项目 所以我只想在结构中跳一次。/,然后进入其中一个目录,word\u列出\u 1并读取所有文件 第六 但这段代码一直在崩溃。为什么呢 public static void main(String[] args) { ArrayList<File> arrayList = new ArrayList<File>(); final String
。/
,然后进入其中一个目录,word\u列出\u 1
并读取所有文件
第六
但这段代码一直在崩溃。为什么呢
public static void main(String[] args)
{
ArrayList<File> arrayList = new ArrayList<File>();
final String directoryName = "../word_lists_1";
listf( directoryName, arrayList );
for(File elem : arrayList)
{
System.out.println(elem+" ");
}
}
public static void listf(String directoryName, ArrayList<File> files)
{
File directory = new File(directoryName);
// get all the files from a directory
File[] fList = directory.listFiles();
for (File file : fList)
{
if (file.isFile())
{
files.add(file);
}
else if (file.isDirectory())
{
listf(file.getAbsolutePath(), files);
}
}
}
所以它不喜欢第49行,这是:
for (File file : fList)
这是我从你的要求中了解到的
- 您位于当前执行目录中,然后希望遍历 返回一个目录并按名称进入其他文件夹 “word_列表_1”
String str=System.getProperty("user.dir");
String filePath = str+"/../word_lists_1";
如果您在其他目录中,则可以执行以下操作
String str=Paths.get(".").toAbsolutePath().normalize().toString();
String filePath = str+"/../word_lists_1";
希望这有帮助
祝你好运 您可能需要文件规范路径来相应地解析父级,并避免任何可能需要解析为null
的路径,因此出现NullPointerException
一个简单的实现可以将a目录从实际路径解析到当前目录,然后显示其加载树层次结构,如下所示:
公共类主
{
公共静态void main(字符串[]args)抛出URISyntaxException、IOException
{
File currentDir=新文件(“.”;//读取当前文件位置
文件targetDir=null;
if(currentDir.isDirectory()){
File parentDir=currentDir.getCanonicalFile().getParentFile();//解析实际路径以外的父位置
targetDir=new File(parentDir,“word_lists_1”);//使用正确的父目录构造目标目录文件
}
如果(targetDir!=null&&targetDir.exists())
{
listDirectoryAndFiles(targetDir.toPath());
}
}
私有静态void listDirectoryAndFiles(路径路径)引发IOException
{
DirectoryStream dirStream=Files.newDirectoryStream(路径);
for(路径p:dirStream)
{
System.out.println(p.getFileName());
if(p.toFile().isDirectory())
{
listDirectoryAndFiles(p);
}
}
}
}
您可能只需要调整listDirectoryAndFiles(java.nio.file.Path)
方法来满足您的需要
请注意,上述实现使用了Java 7中的新I/O功能。检查
getParent
方法是否适合您。。将其应用于目录名?将其应用于该目录名的文件
对象。我认为它不起作用,至少我是如何尝试的。当然,你可以比“持续崩溃”更具体一些?是否引发异常?如果是这样的话,它的stacktrace是什么?我刚刚试过这两种,但都不起作用。我在用intellij。我在一个名为src
的目录中,上面是项目目录,它位于word\u列表\u 1
。我希望它是完全动态的tho,这样随机的人可以从github下载它并运行它,你知道我的意思吗?这是我收到的错误消息:---------------------------------------------------------------------------------------线程“main”java.lang.NullPointerException中的异常位于main.listf(main.java:52)sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect.Method.invoke(Method.java:497)上在com.intellij.rt.execution.application.AppMain.main(AppMain.Yaaa)上,我现在完全得到了u,将不得不考虑类似的问题我得到了错误错误:(93,13)java:找不到符号符号:方法listDirectoryFiles(java.nio.file.Path)位置:class Main
抱歉,第一个方法调用包含错误的方法名称…我已修复它,您可以使用当前示例重试。不是这样。当我删除行File parentDir=currentDir.getCanonicalFile().getParentFile();//将父位置解析为实际路径时,它起作用了
String str=Paths.get(".").toAbsolutePath().normalize().toString();
String filePath = str+"/../word_lists_1";