首页 / 热点百科

csharp生成的文件

2025-07-22 09:24热点百科

最近做项目,收集到较多原始遥感影像文件,其格式全部为tar.gz,由于文件较大(每个文件均大于1GB),根本没有硬盘来全部解压,且项目只需要用到其中的部分文件,就尝试用C#来读取其中的部分文件。

影像文件组织

百度了一下,以·tar.gz为后缀的文件是一种压缩文件,在Linux和macOS下常见,Linux和macOS都可以直接解压使用这种压缩文件。在windows下的WinRAR也可以使用,相当于常见的RAR和ZIP格式。

而面对大量文件中的部分数据读取,自然想到了程序化解决。

此处用到 ICSharpCode.SharpZipLib库,首先需要添加ICSharpCode.SharpZipLib.dll的引用,本文引用的下载地址为: https:///s/1-MK-n3RWg5JUFirlC8cwcw

程序思路主要是2步,第一步是将tar.gz解压为tar格式文件,第二部再从tar文件中将指定文件导出,最后删除tar文件完成操作。

解压tar.gz文件

public bool getTarGzFile(string TargetFile, string saveto, string fileformat)

{

string rootFile = " ";

string filepath = TargetFile;

//读取压缩文件(zip文件),准备解压缩

GZipInputStream gzs = new GZipInputStream(File.OpenRead(filepath.Trim()));

string tarfilename = Path.Combine(Path.GetDirectoryName(TargetFile), Path.GetFileNameWithoutExtension(TargetFile));

FileStream destFile = File.Open(tarfilename, FileMode.Create);

try

{

int buffersize = 2048;//缓冲区的尺寸,一般是2048的倍数

byte[] FileData = new byte[buffersize];//创建缓冲数据

while (buffersize 0)//一直读取到文件末尾

{

buffersize = gzs.Read(FileData, 0, buffersize);//读取压缩文件数据

destFile.Write(FileData, 0, buffersize);//写入目标文件

}

}

catch (Exception ee)

{

Console.WriteLine(ee.Message);

}

destFile.Close();//关闭目标文件

gzs.Close();//关闭压缩文件

bool result = UnZip(tarfilename, saveto, fileformat);

return result;

}

从tar文件中提取指定文件

在上一步倒数第三行有一个UnZip函数就是提取指定格式文件,提取完成后删除tar文件

private bool UnZip(string fileToUnZip, string zipedFolder, string fileformat)

{

bool result = true;

FileStream fs = null;

TarEntry ent = null;

string fileName;

if (!File.Exists(fileToUnZip))

return false;

if (!Directory.Exists(zipedFolder))

Directory.CreateDirectory(zipedFolder);

try

{

TarInputStream zipStream = new TarInputStream(File.OpenRead(fileToUnZip.Trim()));

while ((ent = zipStream.GetNextEntry()) != null)

{

if (!string.IsNullOrEmpty(ent.Name))

{

fileName = Path.Combine(zipedFolder, ent.Name);

fileName = fileName.Replace('http://www.studyofnet.com/', '\\');//change by Mr.HopeGi

int index = ent.Name.LastIndexOf('http://www.studyofnet.com/');

if (index != -1 || fileName.EndsWith("\\"))

{

string tmpDir = (index != -1 ? fileName.Substring(0, fileName.LastIndexOf('\\')) : fileName) "\\";

if (!Directory.Exists(tmpDir))

{

Directory.CreateDirectory(tmpDir);

}

if (tmpDir == fileName)

{

continue;

}

}

ListString formatlb = fileformat.Split(';').ToList();

for (int uu = 0; uu formatlb.Count; uu )

{

if (fileName.Contains(formatlb[uu]))

{

if (File.Exists(fileName))

{

//获取时间

DateTime dt = DateTime.Now;

string timeNow = dt.ToString("yyyy-MM-dd_HH-mm-ss-ff");

fileName = System.IO.Path.GetDirectoryName(fileName) "\\" System.IO.Path.GetFileNameWithoutExtension(fileName) "_" timeNow System.IO.Path.GetExtension(fileName);

}

fs = File.Create(fileName);

int size = 1024 * 1024 * 4;

byte[] data = new byte[size];

while (true)

{

size = zipStream.Read(data, 0, data.Length);

if (size 0)

{

fs.Write(data, 0, size);

}

else

{

break;

}

}

break;

}

}

}

}

zipStream.Close();

}

catch

{

result = false;

}

finally

{

if (fs != null)

{

fs.Close();

fs.Dispose();

}

if (ent != null)

{

ent = null;

}

GC.Collect();

GC.Collect(1);

}

try

{

File.Delete(fileToUnZip);

}

catch (Exception ex)

{

}

return result;

}

实现效果

程序界面

最终实现tar.gz压缩文件中指定文件的自动化提取...

猜你喜欢

  • 科技百科

    heic格式文件用什么电脑打开

    heic文件怎么打开?heic格式可能大家知之甚少,它是苹果系统拍照的格式。它是一种高效的图片格式,这种格式的图片所占空间较少,而且不会损坏画质。但是这种格式,很多情况下无法直接打开。我们所能做的就是将这种格式的图片转换成我们常见的jpg、png格式,这样就可以打开了。下面小编就来给大家介绍heci转换为其他格式的方..

    2025-07-03
  • 科技百科

    mac系统怎么改文件格式

    Mac如何快速更改文件打开方式?Mac系统中很多应用的确很强大,例如 Xcode ,QuickTime Player等,这些应用属于一些文件的默认打开方式,但是如果你电脑内存跟不上的话,打开文件的速度就会非常慢。今天就教大家如何更改文件的打开方式。第一步、选中文件第二步、右键点击文件第三步、点击“打开方式”下拉列表选择你想要的..

    2025-07-03
  • 职场百科

    批量生成excel表格并填充

    在企业单位中,很多时候我们制作表格录入数据,往往都有固定模板。例如办公中使用Excel表格都是根据提供的模板来录入数据。如果只是有几个表格要根据模板录入数据,可以复制模板后逐个填写和修改数据,但是如果要求是提供一个数据表,要讲这些数据填入模板当中,根据模板生成几百几千个工作簿(表格),这样还用手动操作的..

    2025-05-21
  • 热点百科

    hosts文件有没有被修改

    如果我们不想要访问指定的网址,而且不能让别人知道,在浏览器里面只能显示找不到网页。这个方法就很有用了。比如也可以不让小朋友玩游戏,屏蔽它知道的几个网址,让他们误以为是没网络或者是网站坏了,这个也很有帮助。总之你知道如何操作了,如何用都行。下面说下原理是,浏览器访问网页,要揭秘dns,默认hosts的优先级最..

    2025-05-11
  • 人形何首乌,天然生成价值连城,人工形成的很多

    人形何首乌,这是一个最近出现在市场上的一个骗局,许多商贩骗子拿着红薯做成的人形何首乌,用来行骗。他们声称在工地上挖出这个东西之后找人来买。也有许多人上当,因为他们认为人性何首乌是非常吉利的一个东西。1:人形何首乌人性何首乌是外形像人的何首乌,它的形状很像没穿衣服的男性,头部,躯体,四肢轮廓分明,手,..

    2025-04-26
  • word文档目录怎么自动生成?word怎么提取目录

    word文档目录怎么自动生成?如何快速查找文档?“这些问题都是大家在工作中经常遇到的问题。今天,我们就来聊聊这些问题。”市人社局相关负责人介绍,为解决企办理社保业务过程中遇到的困难,市人社局推出了一系列便民举措,包括:简化申报材料、优化服务流程、提高办事效率、减轻群众负担,切实解决企业和群众办事难、办事..

    2025-04-17
  • 旅游美签面签携带的文件(旅游美签面签携带的文件是什么)

    1.旅游美签面签携带的文件是什么进大厅前扫行程码,正常后就把手机替你收藏了,面签是不可以带手机的,一般就只能带些文件袋装的面签可能用到的材料。面试时至少提前半小时到达,迟到 1小时使馆不让当天面试。请勿将电子产品或大包带进领馆,只须携带签证所需材料。注意服饰正式,女士化个淡妆。2.旅游美签面签携带的文件是..

    2025-04-11
  • 科技百科

    怎么修改文件时间和创建时间

    怎么修改文件创建时间?当我们在电脑上创建一个文件时,创建的时候会被写入软件属性当中,打开文件的属性就能看到创建时间,文件的时间能精确到秒。有时候我们为了不让别人知道文件的真实创建时间,就需要对修改文件的创建时间,不知道大家是否有过这样的经历呢?不过修改文件的创建时间可不是一件简单的事情,对于普通电脑..

    2025-02-28

微信分享

微信分享二维码

扫描二维码分享到微信或朋友圈

链接已复制