zoukankan      html  css  js  c++  java
  • 读取jar包里面的文件

    一、最近做项目的时候,师兄要求读取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流,在工作中是甲级错误

  • 相关阅读:
    Calendar日历类
    DateFormat类和SimpleDateFormat类
    Date时间类(java.util.Date)
    时间处理相关类
    不可变和可变字符序列使用陷阱
    String类
    搬圆桌问题
    重温经典之排序 java实现
    i++ 和 ++i
    Intellij Idea 使用技巧 updating
  • 原文地址:https://www.cnblogs.com/googlemeoften/p/4827402.html
Copyright © 2011-2022 走看看