C# 如何在c中读取.DAT文件#

C# 如何在c中读取.DAT文件#,c#,.net,io,C#,.net,Io,我有一个.DAT文件,如果我在记事本中以文本形式打开它,它会给我一些值,比如###! 1. Rename each file extensions of TAXA files from .DAT to .GZ 2. Uncompress (or unzip) all TAXAxxxx.GZ (you can use ZIP) 3. After the file extractions, rename each file with file extensions as TAXAxxxx.TXT

我有一个.DAT文件,如果我在记事本中以文本形式打开它,它会给我一些值,比如
###!

1. Rename each file extensions of TAXA files from .DAT to .GZ
2. Uncompress (or unzip) all TAXAxxxx.GZ (you can use ZIP)
3. After the file extractions, rename each file with file extensions as TAXAxxxx.TXT
这是我试过的代码

        string str = "";
        BinaryReader br = new BinaryReader(File.OpenRead(@"F:\TAXAZ.DAT"));
        foreach (char ch in br.ReadChars(5000))
        str += ch;
        br.Dispose();
这是按照上面提到的说明手动进行的,但当我试图以编程方式进行时,它没有发生。我尝试了压缩和解压的概念,但没有成功。后来我尝试读取二进制文件,然后转换为字符串,但也没有用。 请帮助我以文本形式阅读此文件。
谢谢。

您的说明说您必须将.dat重命名为.gz,解压缩它,然后读取文件。 您的代码跳过了前两个步骤,只是试图读取文件。这就是它不起作用的原因

您可以在C#中执行此操作,但需要对其进行解压缩。你可以用它来做这件事

示例C#来自该链接的代码:

using System;
using System.IO;
using System.IO.Compression;

namespace zip
{
    public class Program
    {
        private static string directoryPath = @"c:\temp";
        public static void Main()
        {
            DirectoryInfo directorySelected = new DirectoryInfo(directoryPath);
            Compress(directorySelected);

            foreach (FileInfo fileToDecompress in directorySelected.GetFiles("*.gz"))
            {
                Decompress(fileToDecompress);
            }
        }

        public static void Compress(DirectoryInfo directorySelected)
        {
            foreach (FileInfo fileToCompress in directorySelected.GetFiles())
            {
                using (FileStream originalFileStream = fileToCompress.OpenRead())
                {
                    if ((File.GetAttributes(fileToCompress.FullName) & 
                       FileAttributes.Hidden) != FileAttributes.Hidden & fileToCompress.Extension != ".gz")
                    {
                        using (FileStream compressedFileStream = File.Create(fileToCompress.FullName + ".gz"))
                        {
                            using (GZipStream compressionStream = new GZipStream(compressedFileStream, 
                               CompressionMode.Compress))
                            {
                                originalFileStream.CopyTo(compressionStream);

                            }
                        }
                        FileInfo info = new FileInfo(directoryPath + "\\" + fileToCompress.Name + ".gz");
                        Console.WriteLine("Compressed {0} from {1} to {2} bytes.",
                        fileToCompress.Name, fileToCompress.Length.ToString(), info.Length.ToString());
                    }

                }
            }
        }

        public static void Decompress(FileInfo fileToDecompress)
        {
            using (FileStream originalFileStream = fileToDecompress.OpenRead())
            {
                string currentFileName = fileToDecompress.FullName;
                string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);

                using (FileStream decompressedFileStream = File.Create(newFileName))
                {
                    using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
                    {
                        decompressionStream.CopyTo(decompressedFileStream);
                        Console.WriteLine("Decompressed: {0}", fileToDecompress.Name);
                    }
                }
            }
        }
    }
}

请告诉我们你到底做了什么。当你解压的时候,你有没有得到一堆文件?你想从“代码”或“资源管理器”窗口解压吗?@EBrown我用我尝试过的代码更新了我的帖子..请帮助我..步骤2告诉你解压文件,您的代码没有尝试这样做。@ScottChamberlain这就是我落后的地方。您能告诉我如何解压缩文件吗谢谢共享代码..我试图执行此代码,但根据我的要求,我需要压缩和解压缩
.DAT
文件,而不是目录或文件夹。如何做..我尝试了,但失败了我的错误..请帮助我..我从网站上复制了整个示例,但您只需要这里的解压缩功能。为你的.dat文件传入一个FileInfo。这样就可以解压并将文件写入磁盘。如果不想将解压流写入磁盘,可以更改解压流的操作。好的。我手动将文件扩展名更改为
.gz
,然后尝试使用共享代码的解压功能解压同一文件,但出现以下错误。` GZip头中的幻数不正确。请确保您正在传递GZip流。这是什么以及如何解决它?请帮助我,先生。我尽了最大努力获得解决方案,但未能成功。请