Java学习笔记之获取当前目录或文件
来源:互联网 发布:张锦洪画家淘宝网 编辑:程序博客网 时间:2024/06/16 22:40
近来在项目中遇到一个关于获取项目目录下配置文件的问题?在eclipse中可以正确获取配置文件,但是当项目打包成jar包后就出现"找不到文件"的异常。特此研究了一下java中获取当前目录和获取项目中文件的方法。
实验代码如下
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.txtURL url = Test.class.getResource("/config/test.txt");System.out.println("test.txt path:" + url);// 获取test.txturl = 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 pathurl = 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/GetDirectorytest.txt path:file:/home/lyh/workspace/GetDirectory/bin/config/test.txttest.txt path:file:/home/lyh/workspace/GetDirectory/bin/test.txtclass path:/home/lyh/workspace/GetDirectory/bincodesource path:file:/home/lyh/workspace/GetDirectory/bin/canonicalpath:/home/lyh/workspace/GetDirectoryabsolutepath:/home/lyh/workspace/GetDirectory
- 在控制台中运行命令
lyh@lyh-pc:~$ java -jar GetDirectory.jar
的结果为:
current diretory:/home/lyhtest.txt path:jar:file:/home/lyh/GetDirectory.jar!/config/test.txttest.txt path:jar:file:/home/lyh/GetDirectory.jar!/test.txtclass path:GetDirectory.jarcodesource path:file:/home/lyh/GetDirectory.jarcanonicalpath:/home/lyhabsolutepath:/home/lyh
结果分析
从中可以看出各中获取目录或文件的方法在eclipse中和命令行中结果的区别:
System.getProperties("user.dir")
在eclipse中结果就是项目的根目录,然而在终端执行时结果就是当前执行命令的目录(与pwd
命令结果一样)。Test.class.getResource()
方法在eclipse中会在项目的/bin
文件夹下找文件,而在终端中则在jar包中的根目录找文件。
总结可以得出当用Test.class.getResource()
找文件时,就是在class目录(即System.getProperty("java.class.path")
的结果)中找文件。
0 0
- Java学习笔记之获取当前目录或文件
- JAVA学习笔记_File类获取、复制当前目录下又有文件
- 获取文件当前目录
- Java学习笔记——获取文件目录内容
- java获取当前目录
- c#学习笔记之获取当前路径
- Java学习笔记 --- 获取系统当前时间
- Linux学习笔记---目录处理命令---删除文件或目录
- 获取当前文件目录shell
- 获取文件当前目录方法
- VBS获取当前文件目录
- Java 获取当前文件.class 的相对或绝对路径
- java获取当前工程目录
- java获取程序当前目录。
- java获取当前工作目录
- java获取当前工作目录
- java获取当前工程目录
- Java中获取当前目录
- iOS 中基础字符判断函数收集(如判断大小写、数字等)
- [补充二]基于多幅图像的3D重构
- butterknife的使用
- 搜索(HDU 1026)
- android mtk6592 禁止拖动主界面图标
- Java学习笔记之获取当前目录或文件
- 小波变换简介(3)
- 第五章 - 图像形态学 - 基于图像金字塔的图像分割(cvPyrSegmentation)
- 苹果开发者帐号(Company)申请流程
- ios7 自定义UINavigationBar UIBarButtonItem 10px的偏移纠正的两种解决方案
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
- 母函数 多项式相乘求系数(HDU 1028)
- Android中Handler的总结(三)实例用户注册
- [Leetcode] Next Permutation