我想在C#
中打开一个SQLite格式3文件作为字符串string fileName = @"C:\Users\Test\Downloads\hello.sql";
using (BinaryReader b = new BinaryReader(File.Open(fileName, FileMode.Open),
Encoding.GetEncoding(1252)))
{
int pos = 0;
int length = (int)b.BaseStream.Length;
while (pos < length)
{
int v = b.ReadInt32();
textBox1.Text += (v);
pos += sizeof(int);
}
}
这是我到目前为止所获得的代码,但是当我尝试打开它时,它会冻结并且不会让你做任何事情,好像它在一个不断的循环中试图打开它。
如果你仍然对我想要做的事情感到困惑。如果您右键单击该文件并使用记事本或记事本++打开它,您可以看到文件内容(字符串),这就是我希望在程序的字符串或文本框中显示的内容。
P.S我不想以SQLite格式打开它,我想将其作为文本打开
答案 0 :(得分:0)
我不确定你为什么要这样做,但这种方法很有效:
string fileName = @"C:\Users\Test\Downloads\hello.sql";
textBox1.Text = File.ReadAllText(filename, Encoding.GetEncoding(1252));
或者如果要将文件内容视为字节值,可以使用:
byte[] buffer = File.ReadAllBytes(filename);
textBox1.Text = BitConverter.ToString(buffer);
编辑:
此代码适用于winforms文本框。我不是只检查0x00,而是使用.NET的char.IsControl函数检查所有控制字符并替换它们。
string fileName = @"C:\Users\Test\Downloads\hello.sql";
byte[] buffer = File.ReadAllBytes(fileName);
Encoding enc = Encoding.GetEncoding(1252);
char[] chars = enc.GetChars(buffer);
for (int n = 0; n < chars.Length; n++)
{
if (char.IsControl(chars[n])) chars[n] = '.';
}
textBox1.Text = new string(chars);