读取jar包中文件
程序员文章站
2022-03-02 20:52:56
...
一、 获得jar加载路径App为jar中类名称
-
第一种:
String path = App.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 如果有中文; path = java.net.URLDecoder.decode(path, "UTF-8");
-
第二种:
String path2 = PetController.class.getProtectionDomain().getCodeSource().getLocation().getFile();
-
第三种:(jvm实现)
String javaPath = System.getProperty("java.class.path");
-
获取分割符,比如加载了多个jar就需要分割
System.out.println(System.getProperty("path.separator") + "path.separator"); int firstIndex = path.lastIndexOf(System.getProperty("path.separator")) + 1; int lastIndex = path.lastIndexOf(File.separator) + 1; path = path.substring(firstIndex, lastIndex);
-
加载资源路径下文件/UI/background.jpg是从项目根路径开始的
java.net.URL fileURL = App.class.getResource("/UI/background.jpg"); System.out.println( fileURL.getPath()); InputStream ins = fileURL.openStream();
-
写到jar包外的绝对路径
OutputStream outs = new FileOutputStream("/Users/heliming/IdeaProjects/dm8/src/main/resources/UI/2.jpg"); byte[] bytess = new byte[2048]; //接受读取的内容(n就代表的相关数据,只不过是数字的形式) int ns = -1; //循环取出数据 while ((ns = ins.read(bytess, 0, bytess.length)) != -1) { //转换成字符串 //写入相关文件 outs.write(bytess, 0, ns); }
-
读取项目根路径
InputStream in = App.class.getResourceAsStream("/UI/background.txt"); byte[] bytes = new byte[2048]; //接受读取的内容(n就代表的相关数据,只不过是数字的形式) int n = -1; //循环取出数据 while ((n = in.read(bytes, 0, bytes.length)) != -1) { //转换成字符串 String str = new String(bytes, 0, n, "UTF-8"); //这里可以实现字节到字符串的转换,比较实用
-
直接输出
System.out.println(str); } in.close();
转载于:https://my.oschina.net/u/3730149/blog/3095871