主要是针对单个文件进行读写操作和压缩操作:用到的主要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#对文件操作(基本的读写以及压缩和解压)的更多相关文章

  1. linux下文件加密压缩和解压的方法

    一.用tar命令 对文件加密压缩和解压 压缩:tar -zcf  - filename |openssl des3 -salt -k password | dd of=filename.des3 此命 ...

  2. [Swift通天遁地]七、数据与安全-(9)文件的压缩和解压

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. C#压缩和解压文件

    这里用两种方法实现C#压缩和解压文件 1.使用System.IO.Compression名称空间下的相关类(需引用 System.IO.Compression.FileSystem和System.IO ...

  4. 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货

    关于本文档的说明 本文档使用WinRAR方式来进行简单的压缩和解压动作,纯干货,实际项目这种压缩方式用的少一点,一般我会使用第三方的压缩dll来实现,就如同我上一个压缩类博客,压缩的是zip文件htt ...

  5. C#文件或文件夹压缩和解压方法(通过ICSharpCode.SharpZipLib.dll)

    我在网上收集一下文件的压缩和解压的方法,是通过ICSharpCode.SharpZipLib.dll 来实现的 一.介绍的目录 第一步:下载压缩和解压的 ICSharpCode.SharpZipLib ...

  6. java 文件压缩和解压(ZipInputStream, ZipOutputStream)

    最近在看java se 的IO 部分 , 看到 java 的文件的压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还 ...

  7. linux常用命令:4文件压缩和解压命令

    文件压缩和解压命令 压缩命令:gzip.tar[-czf].zip.bzip2 解压缩命令:gunzip.tar[-xzf].unzip.bunzip2 1. 命令名称:gzip 命令英文原意:GNU ...

  8. .net文件压缩和解压及中文文件夹名称乱码问题

    /**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博 ...

  9. Ionic.Zip.dll文件压缩和解压

    Ionic.Zip.dll文件压缩和解压 下载地址: http://download.csdn.net/detail/yfz19890410/5578515 1.下载Ionic.Zip.dll组件,添 ...

随机推荐

  1. iOS开发——设计模式那点事

    单例模式(Singleton) 概念:整个应用或系统只能有该类的一个实例 在iOS开发我们经常碰到只需要某类一个实例的情况,最常见的莫过于对硬件参数的访问类,比如UIAccelerometer.这个类 ...

  2. Python求解数组重新组合求最小值(优酷)

    题目描述:题目:含有n个元素的整型数组,将这个n个元素重新组合,求出最小的数,如(321,3,32,) 最小数为321323 题目分析: 将数组中所有元素填充到个数相等,填充的数字为最后一位的数字,如 ...

  3. Scalatra--Introduction And Quick start

    Introduction Scalatra是一款轻易级Scala web框架,通过Scalatra可以很轻易创建web Application,由Linkedln开源并遵循了Ruby Web框架的Si ...

  4. 【SysML】用例图

    引言 对于系统工程师来说,设计用例图是一种极为常见的建模活动.用例图是一种黑盒视图,通过向读者传递一系列的用例以及相关的参与者,对系统对外提供的服务或系统具备的行为进行建模.在详细讨论SysML的用例 ...

  5. jquery 的基础知识,以及和Javascript的区别

    想到之前所学的javascript 我们会想到这几个方面:找元素: 操作内容: 操作属性:操作样式:统一操作元素: jquery 也是从这几个方面来学习的. <head> <meta ...

  6. maven springmvc启动问题

    1.环境 SpringMVC + Maven + mybatis 2.报错提示 严重: Error configuring application listener of class org.spri ...

  7. React组件开发(二)表达式

    var obj = { name:"xiaoming", age:"18" } var Hello= React.createClass({ render:fu ...

  8. 008 Java集合浅析3

    在前面的几节里,本教程从整体架构上去把握了JDK中的集合框架,并简单分析了其中Collection组的顶级接口,知道Collection接口的常见直接子接口有List.Set和Queue,并就这三个子 ...

  9. ThinkPhp框架:父类及表单验证

    这个知识点,就可以通过"登录"和"注册"的页面来学习这个知识点了首先先做一个"登录"功能一.登录功能(父类)(1)登录的控制器在我的控制器文 ...

  10. wemall app商城源码机器人检测

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之 ...