Java毕设源码压缩密码的简单介绍
本文目录一览:
- 1、毕业设计! 用Java设计一个文件的压缩与解压缩软件! 跪求!
- 2、求一个JAVA的压缩程序源代码。
- 3、java压缩文件用ZipInputStream无法解压,下面是源代码
- 4、如何用java 将文件加密压缩为zip文件.
- 5、求一个毕业设计《基于Java的压缩软件》源代码和完成了的软件
毕业设计! 用Java设计一个文件的压缩与解压缩软件! 跪求!
这是我以前写的一个,你看看,应该和这个差不多。。。。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import javax.swing.JFrame;
public class TestZip extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
String doc;
long doczipsize = 0;
TextArea ta;
TextField infotip;
public void init() {
setLocation(200,150);
setTitle("文件压缩器");
setSize(600,450);
BorderLayout b = new BorderLayout();
setLayout(b);
MenuBar menubar = new MenuBar();
setMenuBar(menubar);
Menu fileMenu = new Menu("File",true);
Menu aboutMenu = new Menu("About",true);
MenuItem mi1 = new MenuItem("打开");
MenuItem mi2 = new MenuItem("压缩");
MenuItem mi3 = new MenuItem("解压");
MenuItem mi4 = new MenuItem("退出");
MenuItem mi0 = new MenuItem("关于");
fileMenu.add(mi1);
fileMenu.add(mi2);
fileMenu.add(mi3);
fileMenu.add(mi4);
aboutMenu.add(mi0);
menubar.add(fileMenu);
menubar.add(aboutMenu);
mi1.addActionListener(this);
mi2.addActionListener(this);
mi3.addActionListener(this);
mi4.addActionListener(this);
mi0.addActionListener(this);
ta = new TextArea();
add(BorderLayout.CENTER,ta);
infotip = new TextField();
add(BorderLayout.SOUTH,infotip);
setVisible(true);
}
private void newFile() {
FileDialog dlg = new FileDialog(this,"打开",FileDialog.LOAD);
dlg.setVisible(true);
String filename = dlg.getDirectory() + dlg.getFile();
try {
File f = new File(filename);
FileReader freader = new FileReader(f);
char[] buffer = new char[4096];
int length;
ta.setText("");
while((length = freader.read(buffer)) != -1) {
String s = new String(buffer,0,length);
doc += s;
}
freader.close();
doczipsize = f.length();
showTextInfo();
}catch (IOException e) {
e.printStackTrace();
}
}
private void openFile() {
FileDialog dlg = new FileDialog(this,"解压",FileDialog.LOAD);
dlg.setVisible(true);
String filename = dlg.getDirectory() + dlg.getFile();
try {
File ff = new File(filename);
if(!ff.exists()) {
return;
}
FileInputStream fileis = new FileInputStream(ff);
ZipInputStream zipis = new ZipInputStream(fileis);
zipis.getNextEntry();
DataInputStream dis = new DataInputStream(zipis);
doc = dis.readUTF();
dis.close();
doczipsize = ff.length();
showTextInfo();
}catch (IOException e) {
e.printStackTrace();
}
}
private void saveFile() {
FileDialog dlg = new FileDialog(this,"压缩",FileDialog.LOAD);
dlg.setVisible(true);
String filename = dlg.getDirectory() + dlg.getFile();
try {
if(!filename.endsWith(".zip")) {
filename += ".zip";
}
File f = new File(filename);
if(!f.exists()) {
f.createNewFile();
}
FileOutputStream fileos = new FileOutputStream(f);
ZipOutputStream zipos = new ZipOutputStream(fileos);
zipos.setMethod(ZipOutputStream.DEFLATED);
zipos.putNextEntry(new ZipEntry("zip"));
DataOutputStream dos = new DataOutputStream(zipos);
/*
doc = "";
doc = ta.getText();
*/
dos.writeUTF(doc);
dos.close();
doczipsize = f.length();
showTextInfo();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TestZip zip = new TestZip();
zip.init();
}
private void showTextInfo() {
ta.replaceRange(doc, 0, ta.getText().length());
infotip.setText("uncompressed size:" + doc.length() + " compressed size:" + doczipsize);
}
public void actionPerformed(ActionEvent e) {
String arg = e.getActionCommand();
if("打开".equals(arg)) {
newFile();
} else if("压缩".equals(arg)) {
saveFile();
} else if("解压".equals(arg)) {
openFile();
} else if("退出".equals(arg)) {
System.exit(0);
} else if("关于".equals(arg)) {
}
}
}
求一个JAVA的压缩程序源代码。
package com.io2.homework;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/*压缩文件夹*/
public class MyMultipleFileZip
{
private String currentZipFilePath = "F:/MyZip.zip";
private String sourceFilePath;
private ZipOutputStream zos;
private FileInputStream fis;
public MyMultipleFileZip(String sourceFilePath)
{
try
{
this.sourceFilePath = sourceFilePath;
zos = new ZipOutputStream(new FileOutputStream(currentZipFilePath));
//设定文件压缩级别
zos.setLevel(9);
} catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
// 在当前条目中写入具体内容
public void writeToEntryZip(String filePath)
{
try
{
fis = new FileInputStream(filePath);
} catch (FileNotFoundException e1)
{
e1.printStackTrace();
}
byte[] buff = new byte[1024];
int len = 0;
try
{
while ((len = fis.read(buff)) != -1)
{
zos.write(buff, 0, len);
}
} catch (IOException e)
{
e.printStackTrace();
}finally
{
if (fis != null)
try
{
fis.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
// 添加文件条目
public void addFileEntryZip(String fileName)
{
try
{
zos.putNextEntry(new ZipEntry(fileName));
} catch (IOException e)
{
e.printStackTrace();
}
}
public void addDirectoryEntryZip(String directoryName)
{
try
{
zos.putNextEntry(new ZipEntry(directoryName + "/"));
} catch (IOException e)
{
e.printStackTrace();
}
}
// 遍历文件夹
public void listMyDirectory(String filePath)
{
File f = new File(filePath);
File[] files = f.listFiles();
if(files!=null)
{
for (File currentFile : files)
{
// 设置条目名称(此步骤非常关键)
String entryName= currentFile.getAbsolutePath().split(":")[1].substring(1);
// 获取文件物理路径
String absolutePath = currentFile.getAbsolutePath();
if (currentFile.isDirectory())
{
addDirectoryEntryZip(entryName);
//进行递归调用
listMyDirectory(absolutePath);
}
else
{
addFileEntryZip(entryName);
writeToEntryZip(absolutePath);
}
}
}
}
// 主要流程
public void mainWorkFlow()
{
listMyDirectory(this.sourceFilePath);
if(zos!=null)
try
{
zos.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
new MyMultipleFileZip("F:/fountainDirectory").mainWorkFlow();
}
}
java压缩文件用ZipInputStream无法解压,下面是源代码
Java毕设源码压缩密码我想代码基本没有错Java毕设源码压缩密码,可以解压zip文件
但Java毕设源码压缩密码你的输入文件是rar。
rar和zip是完全不同的算法。rar是商业压缩格式Java毕设源码压缩密码,zip是公开格式。
java的预置库目前无法直接解压rar Java毕设源码压缩密码,需要用第三方库
如何用java 将文件加密压缩为zip文件.
用java加密压缩zip文件:
package com.ninemax.demo.zip.decrypt;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.zip.DataFormatException;
import org.apache.commons.io.FileUtils;
import de.idyl.winzipaes.AesZipFileDecrypter;
import de.idyl.winzipaes.AesZipFileEncrypter;
import de.idyl.winzipaes.impl.AESDecrypter;
import de.idyl.winzipaes.impl.AESDecrypterBC;
import de.idyl.winzipaes.impl.AESEncrypter;
import de.idyl.winzipaes.impl.AESEncrypterBC;
import de.idyl.winzipaes.impl.ExtZipEntry;
/**
* 压缩指定文件或目录为ZIP格式压缩文件
* 支持中文(修改源码后)
* 支持密码(仅支持256bit的AES加密解密)
* 依赖bcprov项目(bcprov-jdk16-140.jar)
*
* @author zyh
*/
public class DecryptionZipUtil {
/**
* 使用指定密码将给定文件或文件夹压缩成指定的输出ZIP文件
* @param srcFile 需要压缩的文件或文件夹
* @param destPath 输出路径
* @param passwd 压缩文件使用的密码
*/
public static void zip(String srcFile,String destPath,String passwd) {
AESEncrypter encrypter = new AESEncrypterBC();
AesZipFileEncrypter zipFileEncrypter = null;
try {
zipFileEncrypter = new AesZipFileEncrypter(destPath, encrypter);
/**
* 此方法是修改源码后添加,用以支持中文文件名
*/
zipFileEncrypter.setEncoding("utf8");
File sFile = new File(srcFile);
/**
* AesZipFileEncrypter提供了重载的添加Entry的方法,其中:
* add(File f, String passwd)
* 方法是将文件直接添加进压缩文件
*
* add(File f, String pathForEntry, String passwd)
* 方法是按指定路径将文件添加进压缩文件
* pathForEntry - to be used for addition of the file (path within zip file)
*/
doZip(sFile, zipFileEncrypter, "", passwd);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
zipFileEncrypter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 具体压缩方法,将给定文件添加进压缩文件中,并处理压缩文件中的路径
* @param file 给定磁盘文件(是文件直接添加,是目录递归调用添加)
* @param encrypter AesZipFileEncrypter实例,用于输出加密ZIP文件
* @param pathForEntry ZIP文件中的路径
* @param passwd 压缩密码
* @throws IOException
*/
private static void doZip(File file, AesZipFileEncrypter encrypter,
String pathForEntry, String passwd) throws IOException {
if (file.isFile()) {
pathForEntry += file.getName();
encrypter.add(file, pathForEntry, passwd);
return;
}
pathForEntry += file.getName() + File.separator;
for(File subFile : file.listFiles()) {
doZip(subFile, encrypter, pathForEntry, passwd);
}
}
/**
* 使用给定密码解压指定压缩文件到指定目录
* @param inFile 指定Zip文件
* @param outDir 解压目录
* @param passwd 解压密码
*/
public static void unzip(String inFile, String outDir, String passwd) {
File outDirectory = new File(outDir);
if (!outDirectory.exists()) {
outDirectory.mkdir();
}
AESDecrypter decrypter = new AESDecrypterBC();
AesZipFileDecrypter zipDecrypter = null;
try {
zipDecrypter = new AesZipFileDecrypter(new File(inFile), decrypter);
AesZipFileDecrypter.charset = "utf-8";
/**
* 得到ZIP文件中所有Entry,但此处好像与JDK里不同,目录不视为Entry
* 需要创建文件夹,entry.isDirectory()方法同样不适用,不知道是不是自己使用错误
* 处理文件夹问题处理可能不太好
*/
ListExtZipEntry entryList = zipDecrypter.getEntryList();
for(ExtZipEntry entry : entryList) {
String eName = entry.getName();
String dir = eName.substring(0, eName.lastIndexOf(File.separator) + 1);
File extractDir = new File(outDir, dir);
if (!extractDir.exists()) {
FileUtils.forceMkdir(extractDir);
}
/**
* 抽出文件
*/
File extractFile = new File(outDir + File.separator + eName);
zipDecrypter.extractEntry(entry, extractFile, passwd);
}
} catch (IOException e) {
e.printStackTrace();
} catch (DataFormatException e) {
e.printStackTrace();
} finally {
try {
zipDecrypter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {
/**
* 压缩测试
* 可以传文件或者目录
*/
// zip("M:\\ZIP\\test\\bb\\a\\t.txt", "M:\\ZIP\\test\\temp1.zip", "zyh");
// zip("M:\\ZIP\\test\\bb", "M:\\ZIP\\test\\temp2.zip", "zyh");
unzip("M:\\ZIP\\test\\temp2.zip", "M:\\ZIP\\test\\temp", "zyh");
}
}
压缩多个文件时,有两个方法(第一种没试):
(1) 预先把多个文件压缩成zip,然后调用enc.addAll(inZipFile, password);方法将多个zip文件加进来。
(2)针对需要压缩的文件循环调用enc.add(inFile, password);,每次都用相同的密码。
求一个毕业设计《基于Java的压缩软件》源代码和完成了的软件
一旦用汇编语言编写
思考大致相同
简单的用VC写
来源发送E-mail
您自己的调试给我留言。
没有太多的时间写在赶时间,笑了起来。