java 读取 rar 注释_java为RAR压缩包添加注释

【实例简介】

【实例截图】

4149b62fdd049e2e4b6ce0b956e1adb9.png

【核心代码】

package com.mingrisoft;

import static java.lang.Runtime.getRuntime;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.EventQueue;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.File;

import java.io.IOException;

import java.util.Scanner;

import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.border.BevelBorder;

import javax.swing.border.EmptyBorder;

import javax.swing.border.TitledBorder;

import javax.swing.filechooser.FileNameExtensionFilter;

public class RarAnnotate extends JFrame {

/**

*

*/

private static final long serialVersionUID = -7145152842194908145L;

private JPanel contentPane;

private JTextField rarFileField;

private File rarFile;

private JTextArea annotateArea;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

RarAnnotate frame = new RarAnnotate();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the frame.

*/

public RarAnnotate() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

contentPane.setLayout(new BorderLayout(0, 5));

setContentPane(contentPane);

JPanel panel = new JPanel();

contentPane.add(panel, BorderLayout.NORTH);

panel.setLayout(new BorderLayout(0, 0));

JLabel lblrar = new JLabel("\u3000\u9009\u62E9RAR\u6587\u6863\uFF1A");

panel.add(lblrar, BorderLayout.WEST);

JButton browseButton = new JButton("\u6D4F\u89C8");

browseButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

do_browseButton_actionPerformed(e);

}

});

panel.add(browseButton, BorderLayout.EAST);

rarFileField = new JTextField();

panel.add(rarFileField, BorderLayout.CENTER);

rarFileField.setColumns(10);

JPanel panel_1 = new JPanel();

FlowLayout flowLayout = (FlowLayout) panel_1.getLayout();

flowLayout.setHgap(25);

contentPane.add(panel_1, BorderLayout.SOUTH);

JButton annotateButton = new JButton("\u6DFB\u52A0/\u4FEE\u6539");

annotateButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

do_annotateButton_actionPerformed(e);

}

});

panel_1.add(annotateButton);

JButton closeButton = new JButton("\u5173\u95ED");

closeButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

do_closeButton_actionPerformed(e);

}

});

panel_1.add(closeButton);

JScrollPane scrollPane = new JScrollPane();

scrollPane.setBorder(new TitledBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null), "\u6CE8\u91CA\u6587\u6863\uFF1A",

TitledBorder.LEADING, TitledBorder.ABOVE_TOP, null, new Color(0, 0, 0)));

contentPane.add(scrollPane, BorderLayout.CENTER);

annotateArea = new JTextArea();

annotateArea.setLineWrap(true);

scrollPane.setViewportView(annotateArea);

}

/**

* 浏览按钮的事件处理方法

*

* @param e

*/

protected void do_browseButton_actionPerformed(ActionEvent e) {

JFileChooser chooser = new JFileChooser();// 创建文件选择器

chooser.setFileFilter(new FileNameExtensionFilter("RAR文档", "rar"));

chooser.setAcceptAllFileFilterUsed(false);

int option = chooser.showOpenDialog(this);// 显示文件打开对话框

if (option != JFileChooser.APPROVE_OPTION)

return;

rarFile = chooser.getSelectedFile();// 获取选择的rar文件

rarFileField.setText(rarFile.toString());// 显示rar文件到文本框

try {

// 创建临时文件

File tempFile = File.createTempFile("rar", ".txt");

// 执行提取注释命令,把注释信息保存在临时文件中

Process process = getRuntime().exec("rar cw \"" rarFile "\" \"" tempFile "\" -y");

process.getOutputStream().close();// 关闭进程输出流

Scanner sc = new Scanner(process.getInputStream());

while (sc.hasNext()) {

sc.nextLine();// 清空输入流

}

process.getInputStream().close();// 关闭输入流

annotateArea.setText("");// 情况文本域内容

Scanner scan = new Scanner(tempFile);// 创建读取临时文件的扫描器

while (scan.hasNext()) {

// 把注释信息显示到文本域控件中

annotateArea.append(scan.next() "\n");

}

} catch (Exception e1) {

e1.printStackTrace();

}

}

/**

* 关闭按钮的事件监听器

*

* @param e

*/

protected void do_closeButton_actionPerformed(ActionEvent e) {

this.dispose();

}

/**

* 添加修改按钮的事件处理方法

*

* @param e

*/

protected void do_annotateButton_actionPerformed(ActionEvent e) {

String annotateStr = annotateArea.getText();// 获取注释文本

int length = annotateStr.getBytes().length;// 获取注释文本长度

if (length > 32767) {// 限制文本长度

JOptionPane.showMessageDialog(null, "注释长度不能大于32767");

return;

}

try {

Process process = getRuntime().exec(// 执行添加注释命令

"rar c \"" rarFile "\"");

// 把注释文本传递给注释命令

process.getOutputStream().write(annotateStr.getBytes());

process.getOutputStream().close();// 关闭输出流

process.getInputStream().close();// 关闭输入流

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值