精华内容
下载资源
问答
  • 从用户上传的附件中 比如 rar,zip文件 用java解析他们, 我看了好多资料都是用的jdk的zip包, 但是那个只是解析zip文件的,并且存在中文问题。 遇到rar文件 通过java 的runtime 调用winrar 的压缩命令 先解到...
  • java解析rar压缩文档

    2011-11-07 17:24:31
    int 为返回rar文件是否加密。 is为rar文件输入流。...java里面没有提供解析rar文档的类库,后来才知道,WinRAR 使用是需要付费的,并不是免费使用的。 由于 RAR 的专利性,没有专门的开源框架来解析 RA...

    int 为返回rar文件是否加密。
    is为rar文件输入流。
    textBuf为保存解析rar文档内的全部文档内容。

    public int getText(InputStream is, StringBuffer textBuf){ }

    java里面没有提供解析rar文档的类库,后来才知道,WinRAR 使用是需要付费的,并不是免费使用的。

    由于 RAR 的专利性,没有专门的开源框架来解析 RAR 文档。

    所以就只好用rar的命令来解析了。

    具体做法是,根据输入进来的流把,该流表示的文件写入系统硬盘中。然后再用rar的命令来解析。这个方法看起来比较复杂,不过也只有这样了。

    代码为:

    <!--EndFragment-->

     

    package RarExtract;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    /**
    * 这里之所以要先把文件写入系统磁盘上,是因为外面只需要调用我这里的getext方法。
    * 而getext只接受流为参数。这里没有把整个程序完全写出来,
    * 只是在这里说明我这程序的思想。所以也没有经过测试。不过我的实际程序是这样写的,
    * 也测试过是能达到要求的。
    * @author Administrator
    *
    */
    public class RarExtractor {
    /*
    * 解压缩命令
    */
    private static int g_File_Number = 0 ;//写入磁盘时rar文件的编号
    private static String unrarCmd = "C://WinRAR//unrar.exe ";
    
    public static void main(String[] args) {
              RarExtractor rar = new RarExtractor();
              InputStream is = null;
             StringBuffer text = new StringBuffer();
             try {
                  is = new FileInputStream( "c://test.rar ");
                  int n = rar.getText(is, text);
                  System.out.println(text);
               } catch (FileNotFoundException e) {
                 e.printStackTrace();
               }
    }
    
    /**
    *
    * @param is
    * @param text
    * @return
    */
    private int getText(InputStream is, StringBuffer text) {
          // 写入文件的临时文件名
           String fileName = "tempfile " +   g_File_Number+ ".rar ";
           // 写入临时文件的路径
           String fileDir = "c:// "+fileName;
             try {
                   //向文件中写入数据
                    FileOutputStream fos = new FileOutputStrea(fileDir);
                    int n = 0;
                   byte[] b = new byte[1024];
                   while ((n = is.read(b)) > 0) {
                        fos.write(b, 0, n);
                     }
                    fos.close();//文件写完后关闭流
    
                     //用unrar命令打印输出rar文件列表
                    String vbCmd = unrarCmd + " vb "+fileDir;
                    Runtime rt = Runtime.getRuntime();  
                     Process p = rt.exec(vbCmd);
                    InputStream newis = p.getInputStream();
                    String fileList = null;//保持rar文件中的文件名列表
                     while((n = newis.read(b))> 0) {
                           if(fileList == null)
                                  fileList = new String(b,0,n);
                          else {
                               fileList += new String(b,0,n);
                          }
                  }
                       String[] fileListArray= null;
                       if(fileList == null)return 0;
                      fileListArray = fileList.split( "/r/n ");//windows系统下以“/r/n分割”
                       String subFileName = null;
                      String subFileCmd = null;
                     for(int i= 0 ; i < fileListArray.length; i++) {
                             subFileName = fileListArray[i];//获得rar文件内部单个文件名
                             //p 打印输出文件内容
                             subFileCmd = unrarCmd + " p "+fileDir + " "+subFileName;
                              Process subp = rt.exec(subFileCmd);
                               subInpuStream = subp.getInputStream();
                            //这里根据列表文件名,判断文件的类型,
                             //根据文件类型,调用不同的文档解析程序解析
                          //如果文档为rar文件则递归调用该方法
    
                            getText(subInputStream,text);
                       }
    
    
                  } catch (IOException e) {
                    e.printStackTrace();
               }
            //删除临时文件
               deleteFile(fileDir);
            return 0;
    }
    
    /**删除临时文件
    * fileDir为临时文件完全路径
    */
        private void deleteFile(String fileDir) {
             File file = new File(fileDir);
               file.delete();
         }
    }

     轉載來自:http://blog.csdn.net/wqjsir/article/details/4269165

    展开全文
  • java解析DXF文件信息,这里涉及到各种转换字符串编码的操作,解决了解析过程中遇到中文的乱码问题,包括circle,ellipse,line,lwpolyline等,还涉及到从DXF文件中读取一个字符串、判断CIRCLE实体、判断ellipse实体、...
  • package impl; import inter.AbstractUnCompressService; import java.io.File;...import java.io.FileOutputStream;...import java.io.IOException;...import java.io.InputStream;...import java.util.Enumera...
    package impl;
    
    import inter.AbstractUnCompressService;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Enumeration;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    
    /**
     * This class is used to uncompress rar & zip compress file
     * 
     * @author Jacky.Dong
     * 
     */
    public class ZipUnCompressServiceImpl extends AbstractUnCompressService {
    
    	private static final String SUFFIX_RAR = ".rar";
    	private static final String SUFFIX_ZIP = ".zip";
    
    	@Override
    	public void unCompressFolder(String folder) {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	@SuppressWarnings("rawtypes")
    	public void unCompressFile(String zipFilename, String outputDirectory)
    			throws IOException {
    
    		if (null == outputDirectory) {
    			outputDirectory = zipFilename.replace(SUFFIX_RAR, "").replace(
    					SUFFIX_ZIP, "");
    		}
    
    		File outFile = new File(outputDirectory);
    		if (!outFile.exists()) {
    			outFile.mkdirs();
    		}
    
    		ZipFile zipFile = new ZipFile(zipFilename);
    
    		Enumeration en = zipFile.entries();
    		ZipEntry zipEntry = null;
    		while (en.hasMoreElements()) {
    			zipEntry = (ZipEntry) en.nextElement();
    			if (zipEntry.isDirectory()) {
    				// mkdir directory
    				String dirName = zipEntry.getName();
    				// System.out.println("=dirName is:=" + dirName + "=end=");
    				dirName = dirName.substring(0, dirName.length() - 1);
    				File f = new File(outFile.getPath() + File.separator + dirName);
    				f.mkdirs();
    			} else {
    				// unzip file
    				String strFilePath = outFile.getPath() + File.separator
    						+ zipEntry.getName();
    				File f = new File(strFilePath);
    
    				// 判断文件不存在的话,就创建该文件所在文件夹的目录
    				if (!f.exists()) {
    					String[] arrFolderName = zipEntry.getName().split(
    							File.separator);
    					String strRealFolder = "";
    					for (int i = 0; i < (arrFolderName.length - 1); i++) {
    						strRealFolder += arrFolderName[i] + File.separator;
    					}
    					strRealFolder = outFile.getPath() + File.separator
    							+ strRealFolder;
    					File tempDir = new File(strRealFolder);
    					// 此处使用.mkdirs()方法,而不能用.mkdir()
    					tempDir.mkdirs();
    				}
    				// end///
    				f.createNewFile();
    				InputStream in = zipFile.getInputStream(zipEntry);
    				FileOutputStream out = new FileOutputStream(f);
    				try {
    					int c;
    					byte[] by = new byte[BUFFEREDSIZE];
    					while ((c = in.read(by)) != -1) {
    						out.write(by, 0, c);
    					}
    					out.flush();
    				} catch (IOException e) {
    					throw e;
    				} finally {
    					out.close();
    					in.close();
    				}
    			}
    		}
    	}
    
    }
    

     

    展开全文
  • java解析marc代码.rar

    2019-08-14 10:09:26
    使用JAVA解析MARC文件,将marc文件读取到表格中显示,并能够切换上下条信息,输入子字段后能够搜索出子字段内容。练手文件,里面修改的地方较多,如有不足,请指正。
  • java 解析 tar gz.rar

    2013-11-14 16:46:17
    java解析tar.gz格式文件 包含jar包
  • Java解压缩RAR文件

    2011-02-06 20:33:45
    RAR属于目前Windows平台应用最广泛的压缩文件格式,但由于RAR格式为商业压缩算法,非免费,所以Java方面没有特别合适的开源制作/解析RAR文件的库。网上解决办法很多,最多的还是介绍由Java调用命令行工具执行winRAR...

    Java操作压缩文件技术整理

     

    1. RAR解压

    RAR属于目前Windows平台应用最广泛的压缩文件格式,但由于RAR格式为商业压缩算法,非免费,所以Java方面没有特别合适的开源制作/解析RAR文件的库。网上解决办法很多,最多的还是介绍由Java调用命令行工具执行winRAR命令进行压缩文件解析操作(虽然可行,但总感觉有那么点别扭)

     

    之前在网上有一款开源的项目叫 JUnrar,但目前项目Project地址已经无效了(不知道是不是触犯了商业条款被迫封了),在被人的空间中搜到了一个当时的发布版本,调用时需要配合其内部提供的dll使用,不是100% Java实现,但也比调用命令行方式用起来正规。经初步测试查看RAR压缩文件内文件列表及压缩文件解压功能正常(压缩包内有示例程序,一看就懂)

    附件中提供下载

     

    2. ZIP压缩/解压

    ZIP格式是开源文件压缩格式,Java支持起来自然没有问题。JDK本身就提供对ZIP文件的操作类,但据网友反映,在处理中文名称的压缩文件时会出错,主要是默认字符集编码不一致造成的。推荐使用 ant.jar 中提供的ZIP文件操作类(与JDK中的实现类基本同名),ANT中提供设置字符集编码的方法,可以解决中文编码问题

    附件中提供下载

    展开全文
  • 软件介绍: IP2Location Java Component java解析架包,可解析收费和免费版本的BIN文件,已测试可用。
  • 微信dat文件解析工具,可电脑端微信的dat加密文件转换为png图片资源。
  • 支持把需要的pdf图片文件解析成xml串输出。请严格根据里面提供的maven依赖以及com.itextpdf该目录层级名称进行测试
  • Java获取excel数据所需jar包,百度的例子都是缺包的。 可以使用Workbook workbook = WorkbookFactory.create(file);的方式获取excel数据。——基于apache的poi解析。 计划是通过excel批量添加数据进数据库,后续会出...
  • atitit.java提取ziprar文件列表 1.取ziprar文件的场景问题 1 1.1.多重压缩的问题 1 1.2.文件名编码的问题 1 1.3.目录的判定 1 2.rar的解析 1 2.1.JAVA使用java-unrar-0.3.jar解压rar,并且解决中文乱码...

    atitit.java提取zip rar文件列表

     

    1. 取zip rar文件的场景问题 1

    1.1. 多重压缩的问题 1

    1.2. 文件名编码的问题 1

    1.3. 目录的判定 1

    2. rar的解析 1

    2.1. JAVA使用 java-unrar-0.3.jar 解压rar,并且解决中文乱码(推荐) 2

    2.2. mucommande 2

    3. -------code 2

    3.1. rrar  code  rarx 4

    4. 参考 5

     

     

    1. 取zip rar文件的场景问题

    1.1. 多重压缩的问题

    为了获取一个压缩包中的文件,而该压缩包里可能又含有压缩包 、文件夹、文件夹里又包含压缩包、文件等各种嵌套的情况,采用广度优先遍历和深度优先遍历的方法解决了此问题。

     

    多重压缩包的获取压缩包内的文件列表。。如果是二级子压缩包,则需要解压到临时目录,然后单层获取。。不能直接获取子压缩包目录。

    1.2. 文件名编码的问题

    jdk的有编码问题。使用apache的包,使用gbk编码就可。。

    1.3. 目录的判定

    目录,也与子文件处于同一同级了。直接next即可。。

     

    作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

    2. rar的解析

    java怎么提取或是解压rar压缩文档?以前查了很多的资料,没有找到相关的第三方库,网上查找的资料说是解析rar只能更加rar的命令行参数来解析。因为rar压缩文档的内部结构是没有共开的。所以没有专门的解析库程序。自己也就只好用命令行了,但是在实际应用中,遇到rar加密时就遇到了问题。

    所以自己又在网上很费心的找了相关资料,终于找到了一个库可以解析rar文档。

    库下载地址:http://www.mucommander.com/。这是个解决多种文档的软件,是用java写的。所以能够引用来解决rar的解析。

     

    mucommander三吗内五六个个api了。。8MuCommander-v0.82.rar 三。少了俩个package。。嫩欣赏几个pkg了。官网上的不好下载。直接下载,可是个独立的软件,到时好西藏质量。。。giveup

     

    2.1. JAVA使用 java-unrar-0.3.jar 解压rar,并且解决中文乱码(推荐)

     有个项目需要解压rar,上网搜索一下大家都在用  java-unrar-0.3.jar ,于是写了一个util方法解压rar

    2.2. mucommande

     

     

    3. -------code

    prjatibrowzipx

     

     

    /**

     * @param args

     */

    public static void main(String[] args) {

     

    try {

    final String zipFileName = "E:\\00\\product3.zip";

    readZipFile(zipFileName"gbk"new Closure2() {

     

    @Override

    public Object execute(Object arg0)   {

    System.out.println("unziping " +zipFileName+"/"+arg0);

    return null;

    }

    });

     

     

     

     

    catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

     

     

     

     

    unziping E:\00\product3.zip/product3/product.sql

    unziping E:\00\product3.zip/product3/proxy2.zip

    unziping E:\00\product3.zip/product3/dir2/导出 - 全部词条 ati pc in com.rar

     

     

     

    public static void readZipFile(String zipFileName, String encode,

    Closure2  clos) {

     

    // = "utf-8";

    String path = new File(zipFileName).getParent();

    org.apache.tools.zip.ZipFile zipFile = null;

    try {

    zipFile = new ZipFile(zipFileNameencode);// , encode

    catch (IOException e1) {

    // TODO Auto-generated catch block

    e1.printStackTrace();

    }

    // new org.apache.tools.zip.ZipFile(zipFileName);

    java.util.Enumeration e = zipFile.getEntries();

     

    org.apache.tools.zip.ZipEntry zipEntry = null;

     

    while (e.hasMoreElements()) {

    zipEntry = (ZipEntry) e.nextElement();

     

    String zipFileName2 =   zipEntry.getName();

    //path_now=zipFileName2;

    if(zipEntry.isDirectory())

    {

    continue;

    }

     

    clos.execute(zipFileName2);

     

     

    }

     

    }

     

     

    3.1. rrar  code  rarx

    prjatibrowrarx

     

     */

    public class RarX {

     

    public static void main(String[] argsthrows Exception {

    unrar("E:\\down\\51vpn.rar"new Closure2() {

     

    @Override

    public Object execute(Object arg0) {

    System.out.println(arg0);

    return null;

    }

    });

    }

     

    /**

     * } 解压rar格式压缩包。

     * 对应的是java-unrar-0.3.jar,但是java-unrar-0.3.jar又会用到commons-logging-1.1.1.jar

     */

    private static void unrar(String sourceRar, Closure2 cls) {

    Archive a = null;

    FileOutputStream fos = null;

     

    try {

    a = new Archive(new File(sourceRar));

    catch (RarException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    throw new RuntimeException(e);

    catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    throw new RuntimeException(e);

    }

    FileHeader fh = a.nextFileHeader();

    while (fh != null) {

    if (!fh.isDirectory()) {

    cls.execute(fh.getFileNameString());

    }

    fh = a.nextFileHeader();

    }

    try {

    a.close();

    catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    a = null;

     

    }

    }

     

     

    4. 参考

    java怎么读取ZipRAR里面的文件啊?_百度知道.htm

    java获取递归获取嵌套压缩包(ziprar)中的所有文件-Java-第七城市.htm

    java提取rar文档中的文本数据 - wqjsir的专栏 博客频道 - CSDN.NET.htm

    atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php - attilax的专栏 博客频道 - CSDN.NET.htm

    Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php - attilax的专栏 博客频道 - CSDN.NET.htm

    转载于:https://www.cnblogs.com/attilax/p/5963656.html

    展开全文
  • Java XML文件操作类:Dom4jHelper源代码文件下载,实现的功能:解析url xml文档,遍历解析文档,遍历解析元素,解析文件,获得根元素,修改xml某节点的值,输出文件路径及文件名 如果输出文件为null,则默认为原xml文件,...
  • import java.io.File;import java.util.Properties;public class UnRarFile {public static void main(String[] args) {UnRarFile unrar = new UnRarFile();unrar.unRarFileCurDir(new File("d:/ftp...
  • (1)。... 在此之前,必须将所需要的jar包导入到java代理中(这在我的资源里面有---资源名字poi-bin-3.8-beta2-20110408.rar)。 //将excel从附件中读取出来 Vector values = null;  InputStre
  • 关于JAVA Apache POI读取...docx格式的word文件实际上是一个压缩包,通过修改后缀名为rar后可用winrar打开,里面实际上是xml文件 这是因为docx文件遵循了OfficeOpenXML规范,该规范内容很多,有兴趣的同学可以自行
  • 文件的的发送和接收过程中,(1).doc格式文件:接收端收到并解析出来的文件不能保持原有的文件内容格式,例如表格,特殊字符等在解析时出现乱码(2).zip以及.rar格式的文件:在压缩的过程中,压缩中文命名的文件...
  • java文件帮助类

    2012-05-10 13:45:20
    javaFile帮助类这里面包括咯文件的上传与下载文件的增删改查 xls的导入导出解析pdf文件 上传rar文件当然需要下载 解析Properties文件 图片上加水印 依赖包 jxl.jar fontbox-0.1.0.jar PDFBox-0.7.3.jar包
  • 字节码解析01.rar

    2021-04-18 15:11:21
    使用Java编程语言,对.class文件进行解析,类似于javap -v filename指令的效果,但是没有对attibutes属性进行解析,需要学习的可以下载,程序运行的效果在本人的博客的附录中
  • 1.上传包含中文文件的zip到服务器上后解压缩,使用unzip解压乱码的原因: 在windows上压缩的文件是以GBK、GB18030等编码格式...2.解决方案: 2.1 使用rar格式上传,它会自动识别编码格式,自动转换。解压命令 unra...
  • Java Dom4jHelper.java XML文件操作类下载,可实现解析xml文档,遍历文档,遍历解析元素,获得根元素,修改xml某节点的值,输出文件路径及文件名,将xml转换为字符串,字符串转换为文档等功能。
  • 分享一个插件。用来解析嵌套Map及注入JavaBean。 应用在MVC中可以注入任意层嵌套的JSOn参数 还有些许bug。有兴趣的同学可以一起研究。。。 ...rar文件是一个简单的示范,用以帮助理解。...
  • Java获取excel数据所需jar包。 可以使用Workbook wb = Workbook.getWorkbook(file);...——仅支持后缀为.xls的文件(使用apache的poi解析还支持.xlsx)。 计划是通过excel批量添加数据进数据库,后续会出例子,望关注~
  • 关于JAVA Apache POI读取...docx格式的word文件实际上是一个压缩包,通过修改后缀名为rar后可用winrar打开,里面实际上是xml文件 这是因为docx文件遵循了OfficeOpenXML规范,该规范内容很多,有兴趣的同学可以自行
  • Java写的HTTP WEB服务器源代码,支持HTTP和webSERIVE服务,可实现网页服务器的基本功能,比如解析HTML文件,建立站点,当然本源码距离真正的WEB服务器还有一定差别,还有很多模块功能需要完善,这里只提供一种实现...
  • JAVA 7 程序设计.part1.rar(解压需2个文件part1,part2目前一次只能上传70M,不得不分卷,希望大家谅解下) 本书由全球资深Java技术专家、高级Java企业级应用架构师、《How Tomcat Works》作者亲自执笔,权威性...
  • JAVA 7 程序设计.part2.rar(解压需2个文件part1,part2目前一次只能上传70M,不得不分卷,希望大家谅解下) 本书由全球资深Java技术专家、高级Java企业级应用架构师、《How Tomcat Works》作者亲自执笔,权威性...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 143
精华内容 57
关键字:

java解析rar文件

java 订阅