- 绝对路径文件读取,最简单,最直接的方式
- /**
- * 从绝对路径读取文件,最基本的文件读取方式
- *
- * @author lihzh
- * @data 2012-4-11 下午9:33:44
- */
- @Test
- public void testGetFileFromAbsolutePath() {
- String dirPathNotUnderClasspath = "D:\\workspace-home\\JavaDemo\\conf";
- File dirFile = new File(dirPathNotUnderClasspath);
- AssertDirFile(dirFile);
- }
- /**
- * 对文件夹类型文件的断言
- *
- * @param dirFile
- * @author lihzh
- * @data 2012-4-11 下午9:49:14
- */
- private void AssertDirFile(File dirFile) {
- // 文件存在
- Assert.assertTrue(dirFile.exists());
- // 是绝对路径
- Assert.assertTrue(dirFile.isAbsolute());
- // 是个文件夹
- Assert.assertTrue(dirFile.isDirectory());
- // 获取文件夹下所有文件
- File[] files = dirFile.listFiles();
- // 下面有文件
- Assert.assertNotNull(files);
- // 且只有一个
- Assert.assertEquals(1, files.length);
- // 文件名匹配
- Assert.assertEquals("test.properties", files[0].getName());
- }
- 相对于执行编译命令路径的方式读取
- /**
- * 从相对路径读取文件,相对于编译路径,在Eclipse中即为工程所在根目录。 本质还是绝 * 对路径读取。
- *
- * @author lihzh
- * @data 2012-4-11 下午9:51:10
- */
- @Test
- public void testGetFileFromRelativePath() {
- String dirPath = System.getProperty("user.dir") + "\\conf";
- File dirFile = new File(dirPath);
- AssertDirFile(dirFile);
- }
- 用URI构造本地文件读取
- /**
- * 构造URI/URL格式的文件路径,读取本地文件
- *
- * @author lihzh
- * @throws URISyntaxException
- * @throws MalformedURLException
- * @data 2012-4-11 下午10:25:00
- */
- @Test
- public void testGetFileFromURIPath() throws URISyntaxException,
- MalformedURLException {
- // 直接用URI构造, 由于URI和URL可以互转,所以如果为URL直接用URL.toURI转换成URI即可
- URI uri = new URI("file:/D:/workspace-home/JavaDemo/conf/");
- File dirFile = new File(uri);
- AssertDirFile(dirFile);
- }
特别说明:用URI/URL的方式构造路径是个人比较推荐的,可以解决一些路径读取的问题。例如:Spring会对URI/URL格式的路径进行专有处理可以准确定位的位置,而直接使用绝对路径,在用Classpath和FileSystem两种不同的初始化方式下,可能会出现错误。
- 利用ClassLoader读取Jar包内部文件
- /**
- * 从依赖的Jar包中读取文件, Jar包内的文件是无法用File读取的,只能用Stream的方式读取。
- *
- * @author lihzh
- * @throws URISyntaxException
- * @throws IOException
- * @data 2012-4-11 下午11:07:58
- */
- @Test
- public void testGetFileFromJarInClassPath() throws URISyntaxException,
- IOException {
- Enumeration<URL> urls = this.getClass().getClassLoader().getResources("conf/test.properties");
- URL url = this.getClass().getClassLoader().getResource("conf/test.properties");
- Assert.assertTrue(urls.hasMoreElements());
- Assert.assertNotNull(url);
- // 注意两种不同调用方式的路径的区别,此处如果不以“/” 开头,会被当作相对于当前类所在的包类处理,自然无法找到。
- // 因为在Class的getResource方法的开头,有一个resolveName方法,处理了传入的路径格式问题。而ClassLoader类里的
- // getResource和getResources均无此处理。使用时候需要用心。
- URL clzURL = this.getClass().getResource("/conf/test.properties");
- URL nullURL = this.getClass().getResource("conf/test.properties");
- Assert.assertNotNull(clzURL);
- Assert.assertNull(nullURL);
- URL thisClzURL = this.getClass().getResource("");
- Assert.assertNotNull(thisClzURL);
- // 开始读取文件内容
- InputStream is = this.getClass().getResourceAsStream("/conf/test.properties");
- Properties props = new Properties();
- props.load(is);
- Assert.assertTrue(props.containsKey("test.key"));
- Assert.assertEquals("thisIsValue", props.getProperty("test.key"));
- }
- 读取Jar内某路径下的所有文件
- /**
- * 从ClassPath中的Jar包读取某文件夹下的所有文件
- *
- * @author lihzh
- * @throws IOException
- * @data 2012-4-13 下午10:22:24
- */
- @Test
- public void testGetFilesFromJarInClassPathWithDirPath() throws IOException {
- String dirPath = "conf/";
- URL url = this.getClass().getClassLoader().getResource(dirPath);
- Assert.assertNotNull(url);
- String urlStr = url.toString();
- // 找到!/ 截断之前的字符串
- String jarPath = urlStr.substring(0, urlStr.indexOf("!/") + 2);
- URL jarURL = new URL(jarPath);
- JarURLConnection jarCon = (JarURLConnection) jarURL.openConnection();
- JarFile jarFile = jarCon.getJarFile();
- Enumeration<JarEntry> jarEntrys = jarFile.entries();
- Assert.assertTrue(jarEntrys.hasMoreElements());
- Properties props = new Properties();
- while (jarEntrys.hasMoreElements()) {
- JarEntry entry = jarEntrys.nextElement();
- // 简单的判断路径,如果想做到想Spring,Ant-Style格式的路径匹配需要用到正则。
- String name = entry.getName();
- if (name.startsWith(dirPath) && !entry.isDirectory()) {
- // 开始读取文件内容
- InputStream is = this.getClass().getClassLoader().getResourceAsStream(name);
- Assert.assertNotNull(is);
- props.load(is);
- }
- }
- Assert.assertTrue(props.containsKey("test.key"));
- Assert.assertEquals("thisIsValue", props.getProperty("test.key"));
- Assert.assertTrue(props.containsKey("test.key.two"));
- Assert.assertEquals("thisIsAnotherValue", props.getProperty("test.key.two"));
- }
PS:附件是测试用的jar包。
相关推荐
本案例是一个通过静态代码块获取资源属性文件的代码块,从而来提高应用性能。。
用读取图片的例子演示在idea中如何读取资源文件。
这是一个完整的myeclipse项目,主要实现的功能有: 1.用java获取wave类型的音频文件头信息; 2.根据传入参数截取指定时间段内的音频片段 改资源为本人原创,下载后导入myeclipse可以直接运行
java 读取远程共享文件,一个操作简单的读取远程资源的控件。
JAVA读取远程网页文件并保存本地 从远程URL地址获取网页文件下载到本地 这个方法可以生成静态HTML文件使用!
用于获取apk文件资源文件 将需要反编译的APK文件放到该目录下,打开命令行界面(运行-cmd) ,定位到apktool文件夹,输入以下命令:java -jar apktool.jar decode test.apk (命令中test.apk指的是要反编译的apk...
以当前文件为基准进行一级级目录指向被引用的资源文件。在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被读取到。一旦改变相对位置就无法被读取到。 2.2 ...
利用swt中的一个获取图片的类SwingResourceManager 来解决将程序打为使用java打包之后,生成的jar包中图片找不着的。这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成...
这里提供了一个有关java实现的文件静态的处理方法
该资源是java通过api的方式来操作hadoop,主要有以下操作: 一.文件操作 1.上传本地文件到hadood 2.在hadoop中新建文件,并写入 3.删除hadoop上的文件 4.读取文件 5.文件修改时间 二.目录操作 1.在hadoop上创建目录 ...
基于springboot的小型Java项目,主要与minio存储有关,包含了各种minio相关操作,包括新建bucket存储桶、查询文件列表、文件上传、下载、预览等。个人资源,请勿转载
java获取百度网盘真实下载路径,根据请求返回的真实地址,自动下载网盘文件。
该程序能够在jFrame的窗口下显示一棵文件树,树的节点与系统文件相对应,右键可以显示菜单,节点有windows的图标,非常好的一个java程序
利用svnkit操作svn,实现对版本修改文件的导出,可以导出多个版本,.java文件将会在本地取出.class文件,导出后压缩成压缩包,主要用于服务器上的资源更新,不需要开发人员去找到对应的.class文件或其他文件压缩然后...
Java根据Url把多个文件下载到指定的文件夹目录,然后再将文件夹目录打包成zip导出,包括子目录也可以打包,有个简单的导出html页面,点击导出按钮下载zip。
Android APK反编译得到Java源代码和资源文件.docx
主要介绍了java获取百度网盘真实下载链接的方法,涉及java针对URL操作及页面分析的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
一个类,用于获取指定路径下文件的各种指纹信息,已经打成jar包,导入后很方便调用,上传以备日后使用。 里面只有5个公共静态方法: public static String getFileMD5(String filename);/*获取指定路径下文件的MD5...
java的springboot框架获取企业微信会话内容进行存档,支持windows部署、linux下的docker部署; 能学到什么:企业微信获取会话的流程;企业微信的获取会话内容的公钥私钥加解密;获取企业微信会话内容; 阅读建议:此...
Java中Properties获取资源文件的方式,其中包括4中方式获取资源文件,这个文件是测试代码