【问题标题】:How can I get relative path of the folders in my android project?如何获取我的 android 项目中文件夹的相对路径?
【发布时间】:2011-02-11 11:36:58
【问题描述】:

如何使用代码获取项目中文件夹的相对路径?

我在我的项目中创建了一个新文件夹,我想要它的相对路径,所以无论应用程序在哪里,路径都是正确的。

我正在尝试在扩展 android.app.Activity 的课堂上做这件事。

可能类似于"get file path from asset"

【问题讨论】:

    标签: java android eclipse resources


    【解决方案1】:

    利用类路径。

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    URL url = classLoader.getResource("path/to/folder");
    File file = new File(url.toURI());
    // ...
    

    【讨论】:

    • 如果“路径/到/文件夹”是指我需要插入项目文件夹的路径,那么它的意义何在......?
    • 它是相对于类路径根的。你不需要c:/absolute/path/to/java/program 在它前面。试试上面的。打印urlfile 的结果。玩它,你就会明白。
    • 我还是不明白该放什么而不是 -> "path/to/folder"
    • 你的问题不就是不明白classpath是什么吗?
    • @Alex Kapustian 要创建一个相对路径名,您可以使用“..\myFolder\myFile”之类的东西来引用 myFolder 中的 myFile,它与您的程序所在的文件夹位于同一目录中。 “..”就像文件系统浏览器中的“向上”按钮。
    【解决方案2】:

    您可以查看此示例代码以了解如何使用 java 示例代码访问相对路径

    import java.io.File;
    
    public class MainClass {
    
      public static void main(String[] args) {
    
        File relative = new File("html/javafaq/index.html");
    
        System.out.println("relative: ");
        System.out.println(relative.getName());
        System.out.println(relative.getPath());
      }
    }
    

    这里getPath会显示文件的相对路径。

    【讨论】:

    • 这是错误的方式。该路径将相对于工作目录。 IE。您执行程序的文件夹,而不是程序本身运行所在的文件夹。切勿在java.io.File 中使用相对路径,这只是可移植性问题。
    • @BalusC,你能推荐其他方法吗?
    【解决方案3】:

    在 Android 中,应用程序级元数据通过 Context 引用访问,Activity 是该引用的后代。

    例如,您可以通过getApplicationInfo().sourceDir 属性获取源目录。 还有其他文件夹的方法(资产目录、数据目录、数据库目录等)。

    【讨论】:

    • 我没有找到如何使用this获取应用路径。你能更具体吗?
    • 这样我只能获取包中的文件夹。我需要获取我在项目内(而不是包内)创建的文件夹的相对路径。像资产一样的文件夹。能不能给我一个能做到的功能?
    【解决方案4】:

    您在寻找应用程序的根文件夹吗?然后我会使用

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

    真正“找出我在哪里”。

    【讨论】:

    • 我之前试过这个,我得到“/”,但这是不对的。 (因为当我试图找到一个不存在的文件时)
    • 您在哪个平台/操作系统上运行?只有“/”表示 Unix/linux/OSX,并且您正在从文件系统的根路径运行您的应用程序。如果这不正确,请提供更多信息。
    • 我的操作系统是win7,路径是:"D:\Eclipse\Workspace\Project Name" 别忘了这是我用模拟器运行的安卓应用
    • 这个小sn-p代码帮助我调试了一个奇怪的问题,我在其他人的集成测试套件中获取类路径资源时遇到了问题。谢谢。
    【解决方案5】:

    使用System.getProperty("user.dir"),您将获得“非绝对路径的基础”查看

    Java Library Description

    【讨论】:

      【解决方案6】:
      File relativeFile = new File(getClass().getResource("/icons/forIcon.png").toURI());
      myJFrame.setIconImage(tk.getImage(relativeFile.getAbsolutePath()));
      

      【讨论】:

        【解决方案7】:

        这样我找到了我的项目路径:

        new File("").getAbsolutePath();
        

        返回“c:\Projects\SampleProject”

        【讨论】:

          【解决方案8】:

          通常我们希望在我们的 Java 项目和特定文件夹(例如 /images)中添加图像、txt、doc 等文件。 我在搜索中发现,在 JAVA 中,我们可以获取从 Root 到我们指定为的文件夹的路径,

          String myStorageFolder= "/images"; // this is folder name in where I want to store files.
          
          String getImageFolderPath= request.getServletContext().getRealPath(myStorageFolder);
          

          这里,request 是 HttpServletRequest 的对象。它将获取从 Root 到 /images 文件夹的整个路径。你会得到类似的输出,

          C:\Users\STARK\Workspaces\MyEclipse.metadata.me_tcat7\webapps\JavaProject\images

          【讨论】:

            猜你喜欢
            • 2017-01-05
            • 1970-01-01
            • 1970-01-01
            • 2014-11-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多