`
xinklabi
  • 浏览: 1586845 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

Java文件加载的各种方法-solve problem

    博客分类:
  • Java
 
阅读更多
1. String filePath = "D:/myfile/test.xt";
2. String filePath = "myfile/test.txt";
3. String filePath = Thread.currentThread().getContextClassLoader().getResource("myfile/test.txt");
File f = new File(filePath);
第1种是常用的从磁盘读文件。
第2种实际上是以工程文件夹(也就是home.dir)为当前目录,然后找myfile/test.txt这个相对路径的文件,如果打成jar包那就是以jar所在目录为当前目录了,需要注意这个不会是以所在类的package目录为当前目录的。
第3种就是类加载器路径找文件了,一般在classpath路径下(如resources下)的文件的加载方式,也就是以resources为当前目录,再找那个相对路径的文件。
------------------------------------------------------------------------------------
常用两种方法,一种是用当前类如ClassA.class.getResource("file.txt") or ("/dir/file.txt");
另一种是我之前总用的ClassLoader方式,即Thread.currentThread().getContextClassLoader()
.getResource("file.txt");
第一种方法主要适合资源和类在一个包下面的,比较好找,可以直接使用不以“/”开头的方式搜索
文件,若以“/”开头则是从项目根路径搜索,具体可以参考下面的例子。
对于第二种方法,java api还有源码里面已经写过,详细的搜索方式可以看看它们。简单来讲,搜索
的文件就是从项目根路径开始的(可以用getResource(“”).getPath()来打印出来),所以再用以
“/”开头来定位文件是找不到的,应该是直接以当前路径为参考,输入文件的相对路径就行了。
而对于File,若使用new File("/file.txt")这个是找不到的,应为"/"是unix的盘符,具体可以看看
Java API。

packagemy;

import java.io.File;
import java.io.IOException;
import java.net.URL;

publicclassMyUrlDemo{


publicstaticvoid main(String[] args){
MyUrlDemo muDemo =newMyUrlDemo();
try{
muDemo.showURL();
}catch(IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}

publicvoid showURL()throwsIOException{

// 第一种:获取类加载的根路径 D:\git\daotie\daotie\target\classes
File f =newFile(this.getClass().getResource("/").getPath());
System.out.println(f);

// 获取当前类的所在工程路径; 如果不加“/” 获取当前类的加载目录 D:\git\daotie\daotie \target\classes\my
File f2 =newFile(this.getClass().getResource("").getPath());
System.out.println(f2);

// 第二种:获取项目路径 D:\git\daotie\daotie
File directory =newFile("");// 参数为空
String courseFile = directory.getCanonicalPath();
System.out.println(courseFile);


// 第三种: file:/D:/git/daotie/daotie/target/classes/
URL xmlpath =this.getClass().getClassLoader().getResource("");
System.out.println(xmlpath);


// 第四种: D:\git\daotie\daotie
System.out.println(System.getProperty("user.dir"));
/*
* 结果: C:\Documents and Settings\Administrator\workspace\projectName
* 获取当前工程路径
*/

// 第五种: 获取所有的类路径 包括jar包的路径
System.out.println(System.getProperty("java.class.path"));

}
}
分享到:
评论

相关推荐

    maximum-flow-problem-solve

    如果您进行编辑,则页面将重新加载。您还将在控制台中看到任何棉绒错误。yarn test在交互式监视模式下启动测试运行器。有关更多信息,请参见关于的部分。yarn build构建生产到应用程序build文件夹。它在生产模式下...

    lets-start-solve-problem-on-kaggle:让我们开始在Kaggle上解决问题

    运行ipython 笔记本(在目录内部lets-start-solve-problem-on-kaggle ): ipython notebook 。 注意:您需要在安装ipython之前(以及一些其他所需的软件包),或者仅安装 。 之后,您将完成所有三个步骤(在不同...

    图论问题matlab工具箱

    grDecOrd - solve the problem about decomposition of the digraph to the sections with mutually accessed vertexes (strongly connected components); grDistances - find the distances between any vertexes ...

    C-code-to-solve-quadratic-equation-源码.rar

    文件名称列表 "C-code-to-solve-quadratic-equation-源码.zip" 指明了源代码的压缩形式,解压后可能会有多个源代码文件,例如 "quadratic_solver.c" 或 "main.c" 等,这些文件会包含上述提及的函数实现。 总之,这...

    XPath-Solve.rar

    XPath-Solve.rar 是一个压缩包,包含了多个与XPath和XML处理相关的资源,特别是针对Java环境下的应用。XPath是一种在XML文档中查找信息的语言,而Java是广泛使用的编程语言,经常用于处理XML数据。这个压缩包可能是...

    use-design-to-solve-technical-bottlenecks-090419084944-phpapp01

    use-design-to-solve-technical-bottlenecks-090419084944-phpapp01

    java-script-probleam-solve

    在JavaScript编程语言中,开发者经常会遇到各种问题,这些问题可能...在"java-script-probleam-solve-main"文件中,可能会包含具体的代码示例、调试技巧和问题案例,这些都是深入学习和解决JavaScript问题的重要资源。

    Algorithm-How-to-Solve-it-by-Computer-R-G-Dromey.zip

    Algorithm-How-to-Solve-it-by-Computer-R-G-Dromey.zip,如何用计算机求解-r.g.dromey解,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。

    matlab-solve.rar_fdtd_fdtd_solve MATLAB

    在“matlab solve”这个文件中,可能包含了上述这些步骤的具体实现,包括了FDTD算法的核心代码。通过运行这个程序,用户可以对不同类型的电磁问题进行仿真,例如研究天线性能、微波器件的设计或光子晶体结构等。 ...

    Coding-solve-Problem:保存为解决问题而编写的编码。(对我来说)

    标题 "Coding-solve-Problem" 暗示这是一...总之,"Coding-solve-Problem-master" 是一个宝贵的资源,对于想要提高 Java 编程技能、深化对算法和数据结构理解,以及学习项目组织的人来说,都是一个值得深入研究的实例。

    藏经阁-Redesigning-PKI-To-Solve-Revocation-Expiration-And-Rotation-

    "藏经阁-Redesigning-PKI-To-Solve-Revocation-Expiration-And-Rotation-Problems" 今天,我们要讨论的是如何重设计Public Key Infrastructure(PKI),以解决吊销、到期和轮换问题。在讲解之前,让我们先了解什么...

    Algorithm-solve-leetcode-problems.zip

    "Algorithm-solve-leetcode-problems.zip"中的"solve-leetcode-problems-master"文件夹很可能是包含了每个LeetCode问题的解题代码,你可以通过阅读这些代码来学习作者是如何应用算法来解决问题的。每一道题目的解决...

    pomdp-solve-v4.0.tar.gz_POMDP C/C++_pomdp_马尔科夫_马尔科夫决策

    **文件结构**:"pomdp-solve-4.0" 可能是解压后的主要目录,其中可能包括源代码、头文件、库文件、示例程序、文档和其他资源。用户需要根据提供的文档或README文件来编译和运行程序,以体验POMDP Solve的功能。 总...

    Computer-Based.Problem.Solving.Process

    Develop an algorithm to solve the problem; Perform the algorithm on the data characterizing the problem; Validate the solution. to the computer use for problem solving in any domain, including ...

    java源码hacker-HackerRank-Solve:HackerRank问题的源代码

    本压缩包文件"java源码hacker-HackerRank-Solve"和"java源黑客“#Hackerearth-Solve”"可能包含了在这些平台上解决问题的Java源代码。通过分析这些源代码,我们可以学习到多种Java编程和算法相关的知识点。 1. **...

    issue-solve-code

    在压缩包中的"issue-solve-code-main"可能是主目录或者主文件,通常包含了一系列的子文件和目录,这些可能包括: 1. **错误处理和调试**:PHP代码中可能会出现各种运行时错误,如语法错误、类型错误、逻辑错误等。...

    Matlab-program-to-solve-Gauss-seidel-for-Feeders._GAUSS SEIDEL

    Gauss seidel matlab program for feeders

    Java解惑(中文版)_java_java解惑_solve65p_

    《Java解惑(中文版)》是一本专为Java初学者设计的学习资料,旨在帮助读者解答在学习Java过程中遇到的各种困惑。"solve65p"可能代表这本书包含65个问题或主题,每个都深入浅出地进行了讲解,旨在解决初学者在编程...

Global site tag (gtag.js) - Google Analytics