2

有没有办法可以使用一些函数来动态设置文件的位置(目录)?

每次我用这样的硬编码文件位置

    String folder = "/Users/...../Desktop/sample";
    File dir = new File(folder);
    File[] files = dir.listFiles();

有什么方法可以避免硬编码吗?我使用的位置不是我当前的目录。

在这方面的建议或帮助表示赞赏。:)

4

3 回答 3

4

在我看来,一些相当简单的方法是可行的,但可能并不完全是你想要的:

从类路径导航

ClassLoader cl = Thread.currentThread().getContextClassLoader();
URL url = cl.getResource("relative/path/from/classpath");

或者

String path = getClass().getClassLoader().getResource(".").getPath();

使用包含路径条目的属性文件

Properties properties = new Properties();
properties.load(new FileInputStream("filename.properties"));
properties.getProperty("PATH")

在你的属性文件中,你会有这样的一行

PATH = the/absolute/path

使用环境变量

System.getenv("THE_PATH_ENV")

您将路径存储在环境变量中的位置(如果适用于您的操作系统)。


将路径作为参数给出 嗯,那个很简单......只需访问 main 中的字符串数组......

public static void main(String[] args){
    String path = args[0]; //Or at whatever position it is in your parameter list
    ..

或者,我认为可以使用 Java 文件系统命令手动遍历目录结构并在其中搜索内容。但是,我不建议这样做,因为这不是他们的目的。如果我想我会求助于一些第 3 方 API。

于 2012-10-04T11:29:15.377 回答
0

如何获取我的 android 项目中文件夹的相对路径?

在项目层次结构中放置一个文件夹,获取项目的相对路径,附加/硬编码文件夹名称和您的文件名。最后你只会硬编码文件名或最后一个文件夹名。

于 2012-10-04T11:17:50.553 回答
0

首先,您可以创建一个属性文件,其中存储了您的路径(您可以运行一次并稍后在您的程序中使用该文件):

/* Create/save properties once */

Properties prop = new Properties();

prop.setProperty("filePath", "/myPath/");

FileOutputStream fos = new FileOutputStream("sampleprops.xml");
prop.storeToXML(fos, "File configuration");
fos.close();

其次,您可以在代码中加载所需的属性:

Properties prop = new Properties();
FileInputStream fis = new FileInputStream("sampleprops.xml");
prop.loadFromXML(fis);

File dir = new File(prop.getProperty("filePath"));
File[] files = dir.listFiles();

您只需确保您可以访问 sampleprops.xml 文件(应该在应用程序的类路径中)。这样,您可以从外部配置文件配置要使用的路径。

于 2012-10-04T11:36:28.947 回答