使用FileStream在C#中打开文件

我正在尝试打开我计划转换为hex的二进制文件但是我遇到了通过FileStream读取文件的问题,

private void button1_Click(object sender, EventArgs e) { openFD.Title = "Insert a BIN file"; openFD.InitialDirectory = "C:"; // Chooses the default location to open the file openFD.FileName = " "; // Iniitalizes the File name openFD.Filter = "Binary File|*.bin|Text File|*.txt"; // FIlters the types of files allowed to by chosen if (openFD.ShowDialog() != DialogResult.Cancel) { chosenFile = openFD.FileName; string directoryPath = Path.GetDirectoryName(chosenFile); // Returns the directory and the file name to reference the file string dirName = System.IO.Path.GetDirectoryName(openFD.FileName); // Returns the proper directory with which to refernce the file richTextBox1.Text += dirName; richTextBox1.Text += chosenFile; FileStream InputBin = new FileStream( directoryPath, FileMode.Open, FileAccess.Read, FileShare.None); } } 

我收到一条错误,说道路的访问被拒绝了,有什么想法吗?

现在我已经得到了错误,我已经遇到了另一个问题,我可以读取二进制文件,但是我想将它显示为Hex文件,我不确定我做错了但是我不是在HEX中获得输出,它似乎是Int值……

 if (openFD.ShowDialog() != DialogResult.Cancel) { chosenFile = openFD.FileName; string directoryPath = Path.GetDirectoryName(chosenFile); string dirName = System.IO.Path.GetDirectoryName(openFD.FileName); using (FileStream stream = new FileStream(chosenFile, FileMode.Open, FileAccess.Read)) { size = (int)stream.Length; data = new byte[size]; stream.Read(data, 0, size); } while (printCount < size) { richTextBox1.Text += data[printCount]; printCount++; } 

您的代码被误评了

 string directoryPath = Path.GetDirectoryName(chosenFile); // Returns the directory and the file name to reference the file 

不是文件名,它是目录路径。 你要:

 FileStream InputBin = new FileStream(chosenFile, FileMode.Open,FileAccess.Read, FileShare.None); 

另外,如果我根据你的意图猜测,你应该将你的全部function更新为:

 private void button1_Click(object sender, EventArgs e) { openFD.Title = "Insert a BIN file"; openFD.InitialDirectory = "C:"; // Chooses the default location to open the file openFD.FileName = " "; // Iniitalizes the File name openFD.Filter = "Binary File|*.bin|Text File|*.txt"; // FIlters the types of files allowed to by chosen if (openFD.ShowDialog() != DialogResult.Cancel) { chosenFile = openFD.FileName; richTextBox1.Text += chosenFile; //You may want to replace this with = unless you mean to append something that is already there. FileStream InputBin = new FileStream(chosenFile, FileMode.Open,FileAccess.Read, FileShare.None); } } 

回答你的第二个问题:

我收到一条错误,说道路的访问被拒绝了,有什么想法吗?

现在我已经得到了错误,我已经遇到了另一个问题,我可以读取二进制文件,但是我想将它显示为Hex文件,我不确定我做错了但是我不是在HEX中获得输出,它似乎是Int值……

修改为使用string.Format:

  if (openFD.ShowDialog() != DialogResult.Cancel) { chosenFile = openFD.FileName; string directoryPath = Path.GetDirectoryName(chosenFile); string dirName = System.IO.Path.GetDirectoryName(openFD.FileName); using (FileStream stream = new FileStream(chosenFile, FileMode.Open, FileAccess.Read)) { size = (int)stream.Length; data = new byte[size]; stream.Read(data, 0, size); } while (printCount < size) { richTextBox1.Text += string.Format( "{0:X} ", data[printCount]; printCount++; } } 

我已经包含了一个想法的例子 。