c#压缩解压 文件夹
我在做项目的时候需要将文件进行压缩和解压缩,于是就从pression
foreach (string file in filenames)
{
//打开压缩文件
FileStream fs = File.OpenRead(file);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
ZipEntry entry = new ZipEntry(file);
entry.DateTime = DateTime.Now;
// set Size and the crc, because the information
// about the size and crc should be stored in the header
// if it is not set it is automatically written in the footer.
// (in this case size == crc == -1 in the header)
// Some ZIP programs have problems with zip files that don't store
// the size and crc in the header.
entry.Size = fs.Length;
fs.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
s.PutNextEntry(entry);
s.Write(buffer, 0, buffer.Length);
}
s.Finish();
s.Close();
}
}
}
现在再来看看解压文件类的源码
/// <summary>
/// 解压文件
/// </summary>
using System;
using System.Text;
using System.Collections;
using System.IO;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Data;
using ICSharpCode.SharpZipLib.BZip2;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
using ICSharpCode.SharpZipLib.GZip;
namespace DeCompression
{
public class UnZipClass
{
public void UnZip(string[] args)
{
ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]));
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(args[1]);
string fileName = Path.GetFileName(theEntry.Name);
//生成解压目录
Directory.CreateDirectory(directoryName);
if (fileName != String.Empty)
{
//解压文件到指定的目录
FileStream streamWriter = File.Create(args[1]+theEntry.Name);
int size = ;
byte[] data = new byte[];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
streamWriter.Close();
}
}
s.Close();
}
}
}
有了压缩和解压缩的类以后,就要在窗体里调用了。怎么?是新手,不会调用?Ok,接着往下看如何在窗体里调用。
首先在窗体里放置两个命令按钮(不要告诉我你不会放啊~),推广赚金币源码然后编写以下源码
/// <summary>
/// 调用源码
/// </summary>
private void button2_Click_1(object sender, System.EventArgs e)
{
string []FileProperties=new string[2];
FileProperties[0]="C:\\unzipped\\";//待压缩文件目录
FileProperties[1]="C:\\zip\\a.zip"; //压缩后的目标文件
ZipClass Zc=new ZipClass();
Zc.ZipFileMain(FileProperties);
}
private void button2_Click(object sender, System.EventArgs e)
{
string []FileProperties=new string[2];
FileProperties[0]="C:\\zip\\test.zip";//待解压的文件
FileProperties[1]="C:\\unzipped\\";//解压后放置的目标目录
UnZipClass UnZc=new UnZipClass();
UnZc.UnZip(FileProperties);
}
好了,到此为止,如何压缩和解压缩的类都已经完成了,需要的朋友直接拿走调吧。
Java实现文件压缩与解压[zip格式,gzip格式]
实现Java中的文件压缩与解压功能,特别是电视直播系统源码对于ZIP和GZIP格式,通常涉及使用Java的多肽和递归技术。这允许对单个文件和任意层次的文件夹进行压缩和解压,特别适合初学者探索。ZIP格式的解压与压缩主要通过使用Java I/O类库中的特定类来完成。
ZIP格式由zip文件和压缩文件组成。而gzip专注于对单个文件进行压缩,并不归档文件。在UNIX环境中,tar命令用于创建档案文件,而gzip命令用于将这些档案压缩。
Java I/O类库包含用于读写压缩格式流的flash聊天室源码类。要提供压缩功能,只需将这些类包装在现有的I/O类外部即可。这些类属于InputStream和OutputStream的子类,因为压缩算法针对的是byte而不是字符。
与ZIP格式相关的接口与类包括Checksum、CheckedInputStream、CheckedOutputStream、DeflaterOutputStream、ZipOutputStream、GZIPOutputStream、InflaterInputStream、gps车辆监控系统源码ZipInputStream、GZIPInputStream和ZipEntry。这些类和接口共同支持ZIP格式文件的创建、读取、写入和解压缩。
使用ZIP格式对多个文件进行压缩与解压时,Java的ZIP类库提供了全面的支持,能够将多个文件压缩成一个压缩包。这个类库使用标准ZIP格式,与多种压缩工具兼容。ZipOutputStream类提供了设置压缩方法和压缩级别的仿试客联盟源码能力。zipOutputStream.setMethod(int method)用于设置默认压缩方法,而zipOutputStream.setLevel(int level)则用于设置压缩级别,级别范围从0到9。
ZipEntry类描述了存储在ZIP文件中的压缩文件,提供了设置和获取ZIP条目信息的方法,如getName()、isDirectory()、setMethod(int method)等。ZipEntry用于ZipFile和ZipOutputStream读取和写入ZIP文件。
在处理中文路径时,Apache Zip工具包(ant.jar)可能比Java内置功能更灵活,支持设置编码方式。尽管Java内置的Zip工具包不支持中文路径,但Apache Zip提供了额外的功能,如设置编码方式。使用Apache Zip工具包时,可以使用org.apache.tools.zip.ZipOutputStream压缩文件,但解压通常需要使用org.apache.tools.zip.ZipEntry,不建议使用Java.util.zip.ZipInputStream。
文件压缩和解压实例通常使用Apache的Zip工具包(ant.jar)实现。由于Java自带的包不支持中文路径,Apache Zip提供了更广泛的选项。不过,两者在处理压缩与解压的基本步骤是相似的,主要是通过GZIPOutputStream和GZIPInputStream等类对文件进行压缩和解压缩。
对于GZIP格式的文件压缩,接口相对简单。只需使用GZIPOutputStream或ZipOutputStream对输出流进行封装,使用GZIPInputStream或ZipInputStream对输入流进行封装,即可进行普通的I/O操作实现文件的压缩与解压。
java zip哪个快
Java中的ZipOutputStream处理更快。以下是详细的解释:
一、Java ZipOutputStream介绍
Java中的ZipOutputStream是用于创建ZIP文件的工具,它可以方便地将多个文件和目录压缩成一个ZIP文件。ZipOutputStream提供了一种流式处理方式,这意味着它可以逐步地处理数据,不需要一次性加载整个文件或大量数据到内存中。这种流式处理的方式在处理大文件时特别有效,因为它可以逐步写入数据,避免内存压力。
二、Zip库的其他选择
除了Java自带的ZipOutputStream,还有其他第三方库如Apache Commons Compress也可以用于处理ZIP文件。这些库提供了更多的功能和更高效的压缩算法,但同时也可能引入额外的性能开销。在使用这些库时,需要根据具体的应用场景和需求进行选择。
三. ZipOutputStream的优势
相较于其他压缩工具或库,ZipOutputStream在Java中的集成度高,使用起来相对简单。它可以直接与Java的IO流结合使用,使得在读取和写入文件时能够高效地进行压缩和解压缩操作。此外,由于它是Java原生的一部分,因此在性能上通常具有更好的表现。特别是在处理大量数据时,ZipOutputStream的流式处理方式能够提供更好的性能表现。
总的来说,Java中的ZipOutputStream在处理ZIP文件时具有更高的效率和更好的性能表现。它的流式处理方式使得在处理大文件和大量数据时更加高效,同时它作为Java原生的一部分,易于集成和使用。
2024-11-21 01:12
2024-11-21 01:05
2024-11-20 23:57
2024-11-20 22:51
2024-11-20 22:40