一、最近做項目的時候,師兄要求讀取jar包里面的java文件。在網上查了各種文件以后,終於完成了,在這里和各位朋友分享一下。
(一)找到jar包所在的位置。
String path="XXXXX";
File file=new File (path);
(二)找到jar包所在的位置以后,通過JarFile這個類讀取文檔中的內容,獲得所有的文件夾名字
JarFile jarFile = new JarFile(new File(filePath)); Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { JarEntry entry = entries.nextElement(); String entryName = entry.getName();
//讀取文件后綴名為.java的文件 if (!entry.isDirectory() && entryName.endsWith(".java")) { 讀取操作。。。。。。 } }
三、獲取jar包文件里面的文件IO流
//filePath是jar文件位置,name是jar文件里面文件的路徑,相當於上面代碼框中的entryName
public InputStream getJarInputStream(String filePath, String name) throws Exception { URL url = new URL("jar:file:" + filePath + "!/" + name); JarURLConnection jarConnection = (JarURLConnection) url .openConnection(); InputStream in = jarConnection.getInputStream(); return in; }
四、讀取文件
public String readFile(String filePath, String entryName, Integer index) { InputStream in = null; BufferedReader br = null; StringBuffer sb = null; try { in = getJarInputStream(filePath, entryName); br = new BufferedReader(new InputStreamReader(in, "UTF-8")); String con = null; sb = new StringBuffer(); while ((con = br.readLine()) != null) { if (before <= row && row < after) { sb.append(con); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (br != null) br.close(); if (in != null) in.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); }
注意:關閉IO流,在工作中是甲級錯誤