不能转换BinaryReader.将PeekChar或ReadChar转换为String

本文关键字:转换 ReadChar String PeekChar BinaryReader 不能 | 更新日期: 2023-09-27 18:13:47

每当我尝试将BinaryReader PeekCharReadChar转换为字符串时,它会给我一个错误

错误1 'System.IO.BinaryReader.PeekChar()'是一个'方法',即在给定的上下文中无效

如何转换?下面是我的代码示例:

 private void openTextToolStripMenuItem_Click(object sender, EventArgs e)
    {
        myPath = textBox3.Text;
        BinaryReader objBinReader = new BinaryReader(File.Open(myPath, FileMode.Open));
        listBox1.Hide();
        richTextBox1.Show();
        richTextBox1.Text = "";
        do
        {
            try
            {
                richTextBox1.Text = richTextBox1.Text + objBinReader.ReadChar.toString();
            }
            catch
            {
                MessageBox.Show(objBinReader.PeekChar.toString());
            }
        } while (objBinReader.PeekChar.toString() != "-1");
        objBinReader.Close();
    }

提前感谢!

不能转换BinaryReader.将PeekChar或ReadChar转换为String

您错过了()的方法调用

richTextBox1.Text = richTextBox1.Text + objBinReader.ReadChar().ToString();

objBinReader.PeekChar().ToString()

实际上,您在char之后读取文件char。为什么不一下子就做完呢?

 private void openTextToolStripMenuItem_Click(object sender, EventArgs e)
 {
     listBox1.Hide();
     richTextBox1.Text = File.ReadAllText(textBox3.Text);
     richTextBox1.Show();
 }

BinaryReader的另一个解决方案是

 private void openTextToolStripMenuItem_Click(object sender, EventArgs e)
 {
     listBox1.Hide();
     // when building string in a loop use StringBuilder
     StringBuilder sb = new StringBuilder();  
     // do not close BinaryReader manually, put using instead 
     using (BinaryReader objBinReader = new BinaryReader(File.OpenRead(textBox3.Text)))
     {
         // PeekChar() is a method, notice () 
         while (objBinReader.PeekChar() != -1) 
             sb.Append(objBinReader.ReadChar()); // ReadChar() is a method as well
     } 
     richTextBox1.Text = sb.ToString();
     richTextBox1.Show();
 }