Opening a File in C# using FileStream

24,393

Your code is miscommented

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

is not the filename, it's the directory path. You want:

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

Addtionally, if I were to guess based on your intentions, you should update your full function to be:

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);
    }
}
Share:
24,393
Bubo
Author by

Bubo

Updated on December 28, 2020

Comments

  • Bubo
    Bubo over 3 years

    I am trying to open a Binary file that I plan on converting to hex but I am running into issues with reading the file via 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);
        }
    }
    

    I am receiving an error saying that the access to the path is denied, any ideas?

    Now that I have gotten that error taken care of I have ran into another Issue, I can read the binary file, but I want to display it as a Hex file, I'm not sure what I am doing wrong but I'm not getting an output in HEX, it seems to be Int values...

    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++;
                }
    
  • Bubo
    Bubo almost 12 years
    chosenFile = openFD.FileName; richTextBox1.Text += chosenFile; - This appends the directory to the textbox, not the actual file
  • Jaime Torres
    Jaime Torres almost 12 years
    I don't understand your question, but FileDialog.FileName returns the fully qualified path to the selected file, which includes the directory and filename.