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"));
}
}
- 浏览: 1586845 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (624)
- C/C++ (33)
- Java (181)
- 网络相关 (7)
- 我爱篮球 (3)
- 也爱足球 (4)
- 杂谈 (1)
- 系统架构 (3)
- Web Service (14)
- Framework (3)
- 系统命令 (8)
- 管理平台相关 (8)
- 其它 (35)
- Websphere (1)
- Struts2 (24)
- Hibernate (16)
- Spring (23)
- javascript (20)
- jquery (23)
- html/css/div (28)
- 数据库 (40)
- JavaWeb (27)
- 设计模式 (2)
- 文档编写 (3)
- SVN (5)
- Ant (1)
- Maven (13)
- 软件项目管理 (8)
- AOP (1)
- kindeditor (1)
- JSON (2)
- Servlt/JSP (4)
- WordXML (2)
- XML (12)
- 面试相关 (7)
- Tomcat (11)
- 性能与调优 (29)
- 职业发展 (2)
- 操作系统 (7)
- AJAX (2)
- DWR (1)
- Eclipse (12)
- 持续集成 (3)
- 批处理命令 (1)
- Mozilla Rhino (2)
- 新鲜技术 (18)
- Apache mina (2)
- 底层技术 (18)
- Linux (22)
- 新鲜技术,IT历史 (1)
- 敏捷开发 (1)
- 版本控制 (5)
- 较火技术 (7)
- 集群 (2)
- Web前端 (13)
- 报表工具 (3)
- 网站架构 (5)
- 大数据 (8)
- 分布式存储 (5)
- 云计算 (8)
- TCP/IP协议 (1)
- 负载均衡 (3)
- 硬件 (1)
- 表现层技术 (3)
- Velocity (3)
- jvm (6)
- 并发编程 (10)
- hadoop (8)
- 数据结构和算法 (12)
- 计算机原理 (1)
- 测试驱动开发-TDD (3)
- 开发技巧 (1)
- 分词器 (1)
- 项目构建工具 (2)
- JMX (4)
- RMI (1)
- 测试技术 (22)
- 网络完全 (1)
- Git (4)
- apache开源包 (4)
- Java常用 (1)
- mock (2)
- OSGi (2)
- MongoDB (1)
- JBPM (1)
- Storm (3)
- mysql (2)
- telnet (1)
- 正则表达式 (1)
- bootstrap (4)
- Apache ActiveMQ (1)
- redis (9)
- Nginx (2)
- rsync+inotify文件同步 (2)
- testng (1)
- 原型设计工具 (1)
- 工程能力 (1)
- 风险控制 (3)
- ibatis (1)
- 分布式 (4)
- 安全技术 (1)
- 计算机基础 (4)
- 消息中间件 (1)
- UML (2)
最新评论
-
u012236967:
java命令执行jar包(里面的main函数)的方式(包括依赖其它的jar包问题) -
世界尽头没有你:
Selenium自动化测试从入门到精通(Java版)百度网盘地 ...
自动化测试工具 Selenium WebDriver 入门教程(针对主流浏览器) -
小小西芹菜:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
dwr实现Reverse Ajax推送技术的三种方式 -
hellozhouqiao:
楼主,请教一点问题.现在我们需要在excel 的页脚里面加上图 ...
FreeMaker + xml 导出word(处理目录,图片和页眉页脚问题) -
乱在长安:
使用Timer会有各种各样的问题好嘛?!书上推荐使用Sched ...
DelayQueue (ScheduledThreadPoolExecutor调度的实现)
发表评论
-
Java SE7新特性之二进制字面量
2016-12-14 22:53 825Java SE 7中, 整数类型(byte, shor ... -
浮点数为什么不精确?为什么银行的金额不能用浮点数计算
2016-12-14 22:52 2012浮点数为什么不精确? 其实这句话本身就不精确, 相对精确一 ... -
计算机是如何计算乘法除法的(实际上都是转换为二进制加法计算)
2016-12-14 22:46 6626http://blog.csdn.net/blues1021 ... -
什么是补码、反码、负数在计算中如何表示
2016-12-14 22:39 919负数在计算机中如何表 ... -
Math.abs()绝对值取到的数不一定是正数
2016-12-14 22:37 1260Math.abs() 注释:Note that if th ... -
用BigInteger实现大素数生成算法
2016-12-06 16:42 1863转自:http://www.cnblogs.co ... -
加密(AES)、公私钥(PKI)、摘要(DIGEST)、签名(SIGNATURE)、证书(CERT)的形象解释和组合用法
2016-09-15 18:19 94071.鲍勃有两把钥匙,一把是公钥,另一把是私钥。 ... -
RSA加密公私钥生成工具(openssl)
2016-09-15 13:00 1185https://www.openssl.org/source/ ... -
RPC原理详解
2016-06-23 20:47 576RPC 功能目标 RPC 的主要功能目标是让构建分布式计算 ... -
Java并发之CountDownLatch、CyclicBarrier和Semaphore
2016-06-23 20:36 1408这次说一下 JUC 中的同步器三个主要的成员:CountDo ... -
线程间协作的两种方式:wait、notify、notifyAll和Condition
2016-06-23 20:35 575在前面我们将了很多关于同步的问题,然而在现实中,需要线程之 ... -
The final local variable xxx cannot be assigned, since it is defined in an enclo
2016-04-24 17:42 1592本文就自己编程时候遇到的一个问题,简要描述一下,并提出解决 ... -
一个奇葩的excel中无法trim的“空格”的问题
2016-03-29 16:21 1925太奇怪了。打印出来的命名是空格,就是 trim() 不管用。 ... -
List深度复制
2016-02-17 09:34 2676昨天弄了一个类似List<Map<String, ... -
Eclipse导入 jar 源码乱码问题
2015-12-15 19:43 871http://blog.csdn.net/laiwenqian ... -
Java高并发编程的各种陷阱
2015-07-25 17:49 1000www.iteye.com/blogs/subjects/ja ... -
ASM介绍(java字节码操作利器)
2015-06-10 20:46 4358转自:http://www.ibm.com/de ... -
JDK 7 中的 Fork/Join 模式(并发处理)
2015-06-03 19:47 1001转自:http://www.ibm.com/dev ... -
Java常见内存溢出异常分析
2015-06-03 16:36 827转自:http://www.iteye.com/news/3 ... -
dom4j解析带有命名空间的xml
2015-04-09 21:23 5527Element rootEle = resultDoc.g ...
相关推荐
如果您进行编辑,则页面将重新加载。您还将在控制台中看到任何棉绒错误。yarn test在交互式监视模式下启动测试运行器。有关更多信息,请参见关于的部分。yarn build构建生产到应用程序build文件夹。它在生产模式下...
运行ipython 笔记本(在目录内部lets-start-solve-problem-on-kaggle ): ipython notebook 。 注意:您需要在安装ipython之前(以及一些其他所需的软件包),或者仅安装 。 之后,您将完成所有三个步骤(在不同...
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-源码.zip" 指明了源代码的压缩形式,解压后可能会有多个源代码文件,例如 "quadratic_solver.c" 或 "main.c" 等,这些文件会包含上述提及的函数实现。 总之,这...
XPath-Solve.rar 是一个压缩包,包含了多个与XPath和XML处理相关的资源,特别是针对Java环境下的应用。XPath是一种在XML文档中查找信息的语言,而Java是广泛使用的编程语言,经常用于处理XML数据。这个压缩包可能是...
use-design-to-solve-technical-bottlenecks-090419084944-phpapp01
在JavaScript编程语言中,开发者经常会遇到各种问题,这些问题可能...在"java-script-probleam-solve-main"文件中,可能会包含具体的代码示例、调试技巧和问题案例,这些都是深入学习和解决JavaScript问题的重要资源。
Algorithm-How-to-Solve-it-by-Computer-R-G-Dromey.zip,如何用计算机求解-r.g.dromey解,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
在“matlab solve”这个文件中,可能包含了上述这些步骤的具体实现,包括了FDTD算法的核心代码。通过运行这个程序,用户可以对不同类型的电磁问题进行仿真,例如研究天线性能、微波器件的设计或光子晶体结构等。 ...
标题 "Coding-solve-Problem" 暗示这是一...总之,"Coding-solve-Problem-master" 是一个宝贵的资源,对于想要提高 Java 编程技能、深化对算法和数据结构理解,以及学习项目组织的人来说,都是一个值得深入研究的实例。
"藏经阁-Redesigning-PKI-To-Solve-Revocation-Expiration-And-Rotation-Problems" 今天,我们要讨论的是如何重设计Public Key Infrastructure(PKI),以解决吊销、到期和轮换问题。在讲解之前,让我们先了解什么...
"Algorithm-solve-leetcode-problems.zip"中的"solve-leetcode-problems-master"文件夹很可能是包含了每个LeetCode问题的解题代码,你可以通过阅读这些代码来学习作者是如何应用算法来解决问题的。每一道题目的解决...
**文件结构**:"pomdp-solve-4.0" 可能是解压后的主要目录,其中可能包括源代码、头文件、库文件、示例程序、文档和其他资源。用户需要根据提供的文档或README文件来编译和运行程序,以体验POMDP Solve的功能。 总...
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"和"java源黑客“#Hackerearth-Solve”"可能包含了在这些平台上解决问题的Java源代码。通过分析这些源代码,我们可以学习到多种Java编程和算法相关的知识点。 1. **...
在压缩包中的"issue-solve-code-main"可能是主目录或者主文件,通常包含了一系列的子文件和目录,这些可能包括: 1. **错误处理和调试**:PHP代码中可能会出现各种运行时错误,如语法错误、类型错误、逻辑错误等。...
Gauss seidel matlab program for feeders
《Java解惑(中文版)》是一本专为Java初学者设计的学习资料,旨在帮助读者解答在学习Java过程中遇到的各种困惑。"solve65p"可能代表这本书包含65个问题或主题,每个都深入浅出地进行了讲解,旨在解决初学者在编程...