主要是针对单个文件进行读写操作和压缩操作:用到的主要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. Linux:- comm命令的妙用

    参数://假设a集.b集.ab交集 # comm [options] textA textB options: 1.表示a集除去ab交集重叠那部分: 2.表示b集除去ab交集重叠那部分: 3.表示ab ...

  2. Docker入门01——Image

    1.获取镜像 2.列出镜像 3.创建镜像 3.1 修改已有镜像 3.2 使用Dockerfile创建镜像 创建Dickerfile文件 使用build来创建镜像 使用新创建的镜像来启动容器 4.移除镜 ...

  3. 从源码解析TreeMap

    上篇文章我们介绍了HashMap集合,这是一个键值对集合,可以高效的按照键查找数值.但是它有一个缺陷:数据如果是无序的可以是很高效的,但是如果数据需要排列有顺序就不适合了.本篇将要介绍的一个集合是树集 ...

  4. Struts2学习第二天——动态方法调用

    method属性 在前面的例子里,Action默认使用execute()方法来处理请求.但是,如果有多个不同的请求需要同一个Action进行不同处理,怎么办?在Struts.xml文件中,需要指定Ac ...

  5. 向上管理(manage up)的的五条原则

    绝大多数的工程师很可能很少关注代码之外的能力,摸爬滚打了将近10年后,我才领悟到除了技术之外还有一项最重要的修炼,那就是"领导与被领导"学(其中包含了换位思考,但不局限于换位思考) ...

  6. ThinkPhp框架的数据库操作(查询)

    TP框架有一套自己的数据库操作的代码,包括数据库的增.删.改.查.本文主要讲解TP框架的数据库查询操作. 找到入口文件的控制器: 我这里的入口文件是Show文件夹下的控制器. 打开Login控制器. ...

  7. 通过JS将BSAE64生成图片并下载

    HTML:<div style="display:block;margin:0 auto;width:638px;height:795px;"><div id=& ...

  8. 黑苹果引导工具 Clover 配置详解及Clover Configurator使用

    黑苹果引导工具 Clover 配置详解及Clover Configurator使用  2017-03-11 14:01:40 by SemiconductorKING 转自:@三个表哥   简介: 可 ...

  9. APUE学习心得

    APUE学习心得 Chapter 3 IO 3.2 文件描述符 文件描述符是一个非负整数.当打开 一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符.0 标准输入,1 标准输出, 2 标准错 ...

  10. KoaHub.js:使用ES6/7特性开发Node.js框架(2)

    介绍   KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async ...