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组件,添 ...
随机推荐
- Linux:- comm命令的妙用
参数://假设a集.b集.ab交集 # comm [options] textA textB options: 1.表示a集除去ab交集重叠那部分: 2.表示b集除去ab交集重叠那部分: 3.表示ab ...
- Docker入门01——Image
1.获取镜像 2.列出镜像 3.创建镜像 3.1 修改已有镜像 3.2 使用Dockerfile创建镜像 创建Dickerfile文件 使用build来创建镜像 使用新创建的镜像来启动容器 4.移除镜 ...
- 从源码解析TreeMap
上篇文章我们介绍了HashMap集合,这是一个键值对集合,可以高效的按照键查找数值.但是它有一个缺陷:数据如果是无序的可以是很高效的,但是如果数据需要排列有顺序就不适合了.本篇将要介绍的一个集合是树集 ...
- Struts2学习第二天——动态方法调用
method属性 在前面的例子里,Action默认使用execute()方法来处理请求.但是,如果有多个不同的请求需要同一个Action进行不同处理,怎么办?在Struts.xml文件中,需要指定Ac ...
- 向上管理(manage up)的的五条原则
绝大多数的工程师很可能很少关注代码之外的能力,摸爬滚打了将近10年后,我才领悟到除了技术之外还有一项最重要的修炼,那就是"领导与被领导"学(其中包含了换位思考,但不局限于换位思考) ...
- ThinkPhp框架的数据库操作(查询)
TP框架有一套自己的数据库操作的代码,包括数据库的增.删.改.查.本文主要讲解TP框架的数据库查询操作. 找到入口文件的控制器: 我这里的入口文件是Show文件夹下的控制器. 打开Login控制器. ...
- 通过JS将BSAE64生成图片并下载
HTML:<div style="display:block;margin:0 auto;width:638px;height:795px;"><div id=& ...
- 黑苹果引导工具 Clover 配置详解及Clover Configurator使用
黑苹果引导工具 Clover 配置详解及Clover Configurator使用 2017-03-11 14:01:40 by SemiconductorKING 转自:@三个表哥 简介: 可 ...
- APUE学习心得
APUE学习心得 Chapter 3 IO 3.2 文件描述符 文件描述符是一个非负整数.当打开 一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符.0 标准输入,1 标准输出, 2 标准错 ...
- KoaHub.js:使用ES6/7特性开发Node.js框架(2)
介绍 KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, Async ...