java - 在不知道绝对路径的情况下访问文件,只知道文件名
问题描述
我试图在我的代码中使用一个文件,但我不想指定绝对文件路径,只指定文件名,例如“fileName.txt”。
我想这样做,因此我能够在文件可能存储在不同文件夹中的不同笔记本电脑上使用此代码。
下面的代码是我目前正在使用的,但是NoSuchFileException
当我运行它时我收到了一个。
FileSystem fs FileSystems.getDefault();
Path fileIn = Paths.get("fileName.txt");
任何想法如何克服这个问题,以便我可以在不知道其绝对路径的情况下找到文件?
解决方案
如果您不向用户询问完整路径,并且您没有必须在其中的特定文件夹,那么您唯一的选择就是搜索它。
从最根路径开始。学习使用 File 类。然后搜索所有的孩子。此实现仅返回找到的第一个具有该名称的文件。
public File findFile(File folder, String fileName) {
File fullPath = new File(folder,fileName);
if (fullPath.exists()) {
return fullPath;
}
for (File child : folder.listFiles()) {
if (child.isDirectory()) {
File possible = findFile(child,fileName);
if (possible!=null) {
return possible;
}
}
}
return null;
}
然后通过调用文件系统的根目录或您要搜索的已配置的最根路径来启动它
File userFile = findFile( new File("/"), fileName );
然而,最好的选择是让用户输入整个路径。大多数环境都有很好的文件系统浏览工具可以为用户执行此操作。
推荐阅读
- javascript - 网络浏览器如果无法加载如图所示的角度但我已经根据本书配置了应用程序
- ios - 使用 spritekit 使精灵快速移动
- javascript - 如何在 HTML 的特定部分添加和删除“表格”?
- python - 使用 fitEllipse 对图像进行椭圆拟合
- ubuntu - 如何在我的 ubuntu 命令行中解决这个问题?
- firebase - 如何检测 Firebase 连接是否在线/离线 - Unity
- javascript - 单击导航栏后如何在文本上放置动画?
- input - Lua - “ex.sleep”运行时可以停止输入吗?
- mysql - Mysql从其他表中不存在的表中选择值
- java - 如何输入多个整数或其他类型?