使用FileStream在C#中打开文件

Bub*_*ubo 4 c# binary hex filestream

我正在尝试打开我计划转换为十六进制的二进制文件但是我遇到了通过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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,表示访问该路径被拒绝,有任何想法吗?

既然我已经得到了错误,我已经遇到了另一个问题,我可以读取二进制文件,但我想将它显示为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++;
            }
Run Code Online (Sandbox Code Playgroud)

Jai*_*res 10

您的代码被误评了

string directoryPath = Path.GetDirectoryName(chosenFile); // Returns the directory and the file name to reference the file
Run Code Online (Sandbox Code Playgroud)

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

FileStream InputBin = new FileStream(chosenFile, FileMode.Open,FileAccess.Read, FileShare.None);
Run Code Online (Sandbox Code Playgroud)

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

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);
    }
}
Run Code Online (Sandbox Code Playgroud)