C#对文件操作(基本的读写以及压缩和解压)
主要是针对单个文件进行读写操作和压缩操作:用到的主要C#类有FileStream、FileInfo、StreamWrite、StreamRead、GZipStream。
字符数组和字节数组的转换:
byte[] bytedata = new byte[];
char[] chardata = new char[];
try
{
FileStream fs = new FileStream("App.config", FileMode.Open);
fs.Seek(, SeekOrigin.Begin);
fs.Read(bytedata, , );
}
catch (IOException io)
{
Console.WriteLine(io.ToString());
Console.ReadKey();
return;
}
Decoder dc = Encoding.UTF8.GetDecoder();//创建一个解码器用来对二进制数组解码成字符数组
dc.GetChars(bytedata, , bytedata.Length, chardata, );
Console.WriteLine(chardata);
Console.ReadKey();
byte[] byteData;
char[] charData;
try
{
FileStream fs = new FileStream("Log.txt", FileMode.Create);
charData = "this is the user first log the software".ToCharArray();
Encoder e = Encoding.UTF8.GetEncoder();
byteData = new byte[charData.Length];
e.GetBytes(charData, , charData.Length, byteData, , true);
fs.Seek(, SeekOrigin.End);
fs.Write(byteData, , byteData.Length);
}
catch (IOException io)
{
Console.WriteLine(io.ToString());
Console.ReadKey();
return;
}
Console.ReadKey();
对文件进行压缩和解压(一单个文件为例):
string fileName = "CompressedFile.txt";
Console.WriteLine("Please input a word and it will repeate 100 times");
string inputString = Console.ReadLine();
StringBuilder sourceString = new StringBuilder(inputString.Length * );
for (int i = ; i < ; i++)
{
sourceString.AppendLine(inputString);
}
string sourceCompresses = sourceString.ToString();
Console.WriteLine("source data's length is {0}", sourceCompresses.Length);
try
{
CompressedFile(fileName, sourceCompresses);
Console.WriteLine("Compressed successfully");
FileInfo fileInfo = new FileInfo(fileName);
Console.WriteLine("compressed file's length is{0}", fileInfo.Length);
string loadCompressed = LoadCompressedFile(fileName);
Console.WriteLine(loadCompressed);
}
catch (IOException io)
{
Console.WriteLine(io.ToString());
Console.ReadKey();
return;
}
Console.ReadKey();
} private static void CompressedFile(string fileName, string sourceCompress)
{
FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
GZipStream gzCompressedFile = new GZipStream(fs, CompressionMode.Compress);
StreamWriter sw = new StreamWriter(gzCompressedFile,Encoding.UTF8);
sw.Write(sourceCompress);
sw.Close();
} private static string LoadCompressedFile(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
GZipStream gzLoadCompressed = new GZipStream(fs, CompressionMode.Decompress);
StreamReader sr = new StreamReader(gzLoadCompressed,Encoding.UTF8);
StringBuilder strBuild = new StringBuilder();
string strReadLine = sr.ReadLine();
while (!string.IsNullOrEmpty(strReadLine))
{
strBuild.Append(strReadLine);
strReadLine = sr.ReadLine();
}
return strBuild.ToString();
}
C#对文件操作(基本的读写以及压缩和解压)的更多相关文章
- linux下文件加密压缩和解压的方法
一.用tar命令 对文件加密压缩和解压 压缩:tar -zcf - filename |openssl des3 -salt -k password | dd of=filename.des3 此命 ...
- [Swift通天遁地]七、数据与安全-(9)文件的压缩和解压
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- C#压缩和解压文件
这里用两种方法实现C#压缩和解压文件 1.使用System.IO.Compression名称空间下的相关类(需引用 System.IO.Compression.FileSystem和System.IO ...
- 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货
关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...
- C#文件或文件夹压缩和解压方法(通过ICSharpCode.SharpZipLib.dll)
我在网上收集一下文件的压缩和解压的方法,是通过ICSharpCode.SharpZipLib.dll 来实现的 一.介绍的目录 第一步:下载压缩和解压的 ICSharpCode.SharpZipLib ...
- java 文件压缩和解压(ZipInputStream, ZipOutputStream)
最近在看java se 的IO 部分 , 看到 java 的文件的压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还 ...
- linux常用命令:4文件压缩和解压命令
文件压缩和解压命令 压缩命令:gzip.tar[-czf].zip.bzip2 解压缩命令:gunzip.tar[-xzf].unzip.bunzip2 1. 命令名称:gzip 命令英文原意:GNU ...
- .net文件压缩和解压及中文文件夹名称乱码问题
/**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博 ...
- Ionic.Zip.dll文件压缩和解压
Ionic.Zip.dll文件压缩和解压 下载地址: http://download.csdn.net/detail/yfz19890410/5578515 1.下载Ionic.Zip.dll组件,添 ...
随机推荐
- JavaScript定时器及相关面试题
在单线程JavaScript这篇文章中,在介绍JavaScript单线程的同时,也介绍了setTimeout是如何工作的.但是对于定时器的一些内容,并没有做深入的讨论.这篇文章,会详细说说JS的两种定 ...
- Ionicons的使用
安装 参考Ionicons npm install react-native-vector-icons --save 这时候可能会报错:npm WARN deprcated lodash@4.2.0: ...
- 基于vue2.0+vuex+localStorage开发的本地记事本
本文采用vue2.0+vuex+localStorage+sass+webpack,实现一个本地存储的记事本.兼容PC端和移动端.在线预览地址:DEMO github地址:https://github ...
- Mysql删除表格之后,进行恢复
一:存在在PHPmyAdmin下找到表格导出然后再导入 二:当没有备份时,使用binlog功能进行恢复 先进入到/etc/my.cnf文件中. 在文件中添加一句:log-bin=mysql-bin 然 ...
- Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口
Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口 >>>>>>>>>& ...
- 【WCF】错误处理(一):FaultException 与 FaultReason 的搭配
这里所说的错误处理主要是指服务代码中抛出的异常,即开发人员主动抛出的错误当然,由于网络问题或者配置不正确,会引发连接超时的错误,但这里老周要说的是,我们在实现服务逻辑时主动抛出的异常,尤其是对客户端传 ...
- HTML5—canvas绘制图形(1)
1.canvas基础知识 canvas元素是HTML5中新增的一个重要的元素,专门用来绘制图形,不过canvas本身不具备画图的能力,在页面中放置了canvas元素,就相当于在页面中放置了一块矩形的“ ...
- IOS本地日志记录方案
我们在项目中日志记录这块也算是比较重要的,有时候用户程序出什么问题,光靠服务器的日志还不能准确的找到问题. 现在一般记录日志有几种方式: 1.使用第三方工具来记录日志,如腾讯的Bugly,它是只把程序 ...
- 使用python landport库快速实现排行榜
背景介绍 排行榜业务使用的频率实在太高了,各种活动都会使用排行榜.经过多次开发后我觉得实现一个简单的排行榜库,它能够完成当前我遇到的所有业务逻辑问题,也希望能够帮助到想要快速开发排行榜业务的同行. 我 ...
- Opencv2.4.13 与Visual Studio2013 环境搭建配置
opencv这个工具来进行图像处理.大致是使用C++语言编写程序实现识别算法的实现,所以首先就要进行opencv与VS环境的配置. Shaine属于那种半路出家之人都算不上的那种,本科期间三四 ...