如何在c#中读取特定于应用程序的二进制文件的内容

时间:2014-08-18 14:13:09

标签: c# .net c#-4.0

我正在尝试使用C#读取二进制文件的内容。考虑一个可以包含特定于应用程序的文件的应用程序,这意味着用户只能使用此应用程序打开这些文件。应用程序可能不提供对用户的完全访问权限,例如,某个用户可能被授予只读访问权限。假设我想允许某个用户打开与我的应用程序关联的文件,并允许用户编辑该文件。我尝试过以下方法:

// Read the file into <bits>
var fs = new FileStream(@"c:\temp\test.appx", FileMode.Open);
var len = (int)fs.Length;
var bits = new byte[len];
fs.Read(bits, 0, len);
// Dump 16 bytes per line
for (int ix = 0; ix < len; ix += 16) 
{
    var cnt = Math.Min(16, len - ix);
    var line = new byte[cnt];
    Array.Copy(bits, ix, line, 0, cnt);
    // Write address + hex + ascii
    Console.Write("{0:X6}  ", ix);
    Console.Write(BitConverter.ToString(line));
    Console.Write("  ");
    // Convert non-ascii characters to .
    for (int jx = 0; jx < cnt; ++jx)
        if (line[jx] < 0x20 || line[jx] > 0x7f) line[jx] = (byte)'.';
            Console.WriteLine(Encoding.ASCII.GetString(line));
}

但是,我无法从特定于应用程序的二进制文件中读取数据。有没有其他方法可以阅读完整的文件内容?

我更新了我的问题:

dÿþÿ5C : \ U S E R S \ V S T E C H N. O S \ D E S K T. O P \ T R A I N. 我N G \ R A W \ 1 \ S E C - 3 5 。 X P R ÿÿ
CProfileÿþÿ
   ²çÂu° º£吗? €AA           :

:§èH。 ÿ¡!AAD“ÛùÞ.À
 €AÀZd;ßOíÀTã¥> À-À€AÀWW2 Ä1ÀÚ¬ú\ me +À
 €AÀHPüs×埃塔 ¤®) - AÀÄBi Þ1À®¶bÙý'À
 €AA°COE(MA0»” U&amp;ÀAÀ¿} 8 G“ÀƒÀÊ¡E¶$ A
 €AÀÁÊ¡E¶sÀNÑ“\ þ##À€Àd]ÜF

我能够阅读一些人类可读格式的文本,而且我不能保留文本,就像损坏的数据一样。

1 个答案:

答案 0 :(得分:0)

快速且非常脏的版本。我用一个小的二进制文件做了这个,它工作得很好。

var file = File.ReadAllBytes(fileName);   
//Your byte array stuff, turn it from Binary to Byte array into memory aka byteArray

... //MORE STATEMENTS ETC....

//Reads your byteArray as a readable txt File that will allow them to read it accordingly in ENGLISH.

string result = System.Text.Encoding.UTF8.GetString(byteArray)