Java学习笔记之获取当前目录或文件
2014-11-13 09:59
726 查看
近来在项目中遇到一个关于获取项目目录下配置文件的问题?在eclipse中可以正确获取配置文件,但是当项目打包成jar包后就出现"找不到文件"的异常。特此研究了一下java中获取当前目录和获取项目中文件的方法。
在eclise中的运行的结果为:
在控制台中运行命令
从中可以看出各中获取目录或文件的方法在eclipse中和命令行中结果的区别:
总结可以得出当用
实验代码如下
import java.io.File; import java.io.IOException; import java.net.URL; public class Test { public static void main(String[] args) { // 获取当前程序执行的目录 String path = System.getProperty("user.dir"); System.out.println("current diretory:" + path); // 获取/config/test.txt URL url = Test.class.getResource("/config/test.txt"); System.out.println("test.txt path:" + url); // 获取test.txt url = Test.class.getResource("/test.txt"); System.out.println("test.txt path:" + url); // 获取class目录 path = System.getProperty("java.class.path"); System.out.println("class path:" + path); // 获取codesource path url = Test.class.getProtectionDomain().getCodeSource().getLocation(); System.out.println("codesource path:" + url); // 获取当前程序目录 File file = new File(""); try { System.out.println(file.getCanonicalPath()); } catch (IOException e) { e.printStackTrace(); } System.out.println(file.getAbsolutePath()); } }
项目目录
运行结果
在eclise中的运行的结果为:current diretory:/home/lyh/workspace/GetDirectory test.txt path:file:/home/lyh/workspace/GetDirectory/bin/config/test.txt test.txt path:file:/home/lyh/workspace/GetDirectory/bin/test.txt class path:/home/lyh/workspace/GetDirectory/bin codesource path:file:/home/lyh/workspace/GetDirectory/bin/ canonicalpath:/home/lyh/workspace/GetDirectory absolutepath:/home/lyh/workspace/GetDirectory
在控制台中运行命令
lyh@lyh-pc:~$ java -jar GetDirectory.jar的结果为:
current diretory:/home/lyh test.txt path:jar:file:/home/lyh/GetDirectory.jar!/config/test.txt test.txt path:jar:file:/home/lyh/GetDirectory.jar!/test.txt class path:GetDirectory.jar codesource path:file:/home/lyh/GetDirectory.jar canonicalpath:/home/lyh absolutepath:/home/lyh
结果分析
从中可以看出各中获取目录或文件的方法在eclipse中和命令行中结果的区别:System.getProperties("user.dir")在eclipse中结果就是项目的根目录,然而在终端执行时结果就是当前执行命令的目录(与
pwd命令结果一样)。
Test.class.getResource()方法在eclipse中会在项目的
/bin文件夹下找文件,而在终端中则在jar包中的根目录找文件。
总结可以得出当用
Test.class.getResource()找文件时,就是在class目录(即
System.getProperty("java.class.path")的结果)中找文件。
相关文章推荐
- JAVA学习笔记_File类获取、复制当前目录下又有文件
- Java学习-042-获取目录文件列表(当前,级联)
- java学习笔记 使用递归 将文件目录树形结构输出,递归删除目录 文件夹。
- Java 学习笔记(实用篇) 获取当前类的与当前工程的路径
- java学习笔记(2):获取文件名和自定义文件过滤器
- Web 在线文件管理器学习笔记与总结(1)初始文件以及获取首层目录信息
- 目录下文件遍历及txt内容获取学习笔记
- Jsoup学习笔记6之File类操作文件:获取指定目录下面,指定扩展名(.saz)的文件,并在对应的文件夹下生成同名的csv文件。
- JavaScript学习笔记之获取当前目录
- Java Web 学习笔记之一:服务器获取表单上传的文件
- PHP学习笔记——目录,文件,磁盘信息获取
- Java学习-043-获取文件在目录中的路径
- JAVA基础 day22 File类的方法和应用 利用递归获取目录下的所有文件 Properties类的应用(和IO技术结合,存取配置文件) 打印流和合并流等功能类的学习应用 切割文件练习
- node.js认识学习二:__dirname获取当前模块文件所在目录的完整绝对路径
- JavaScript学习笔记之获取当前目录的实现代码
- Androidx学习笔记(45)--- 获取文件的后缀名(java基本语法)
- java学习笔记-获取并打印C盘下多级目录名和文件名, 目录前加"-", 文件名前加两个空格
- Java学习笔记 --- 获取系统当前时间
- Java.io包学习-获取文件的父目录
- JavaScript学习笔记之获取当前目录的实现代码