主要是针对单个文件进行读写操作和压缩操作:用到的主要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. java第二天

    while循环 基本格式: int sum=0: int i =0:初始化循环变量值 while(i<10循环条件){ 循环变量变化的过程 i++: 循环体 sum+=i; System.out ...

  2. 第三方库AFNetworking 3.1.0的简单使用

    AFNetworking是一个 在iOS开发中 使用非常多网络开源库.它是一个轻量级的网络请求API类库. 适用于iOS以及Mac OS X.它构建于在(Apple iOS开发文档) NSURLCon ...

  3. HTML第一课

    <标签名 属性>内容</标签名> <标签/> 静态网页与动态网页的区别:是否从数据库提取数据相对路径跟绝对路径../代表高一级的&nbsp牛逼的空格< ...

  4. View的呈现(一)ActionResult

    ActionResult Http是一个单纯采用请求/回复消息交换模式的网络协议,Web服务器在接收并处理来自客户端的请求后悔根据处理结果对请求予以回应.一般来说针对请求的处理最终体现在对目标Acti ...

  5. 转:js中cookie的使用详细分析

    cookie机制将信息存储于用户硬盘,因此可以作为全局变量,这是它最大的一个优点.它可以用于以下几种场合. (1)保存用户登录状态.例如将用户id存储于一个cookie内,这样当用户下次访问该页面时就 ...

  6. 用json传值时,最后一个不加逗号

    <javascript> $('.obj').css( 'position':'relative', 'top':'100px', 'left':'100px' ); </javas ...

  7. 二叉堆 C++实现

    #ifndef __BINARY_HEAP_H__ #define __BINARY_HEAP_H__ #include <iostream> #include <vector> ...

  8. Android -- 仿小红书欢迎界面

    1,觉得小红书的欢迎界面感觉很漂亮,就像来学习学习一下来实现类似于这种效果  原效果图如下: 2,根据效果我们来一点点分析 第一步:首先看一下我们的主界面布局文件视图效果如下: main_activi ...

  9. 基础篇系列,JAVA的并发包 - 锁

    JAVA中主要锁 synchronized Reentrantlock ReentrantReadWriteLock 问题引入 为什么需要锁? 为什么JAVA有了synchronize还需要Reent ...

  10. C#基础笔记---浅谈XML读取以及简单的ORM实现

    背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...