Search code examples
c#filestream

FileStream is not working with relative path


I'm trying to use a FileStream with a relative path but it is not working.

 var pic = ReadFile("~/Images/money.png");

It is working when I use something like:

var p = GetFilePath();
var pic = ReadFile(p);

the rest of the code(from SO):

public static byte[] ReadFile(string filePath)
        {
            byte[] buffer;
            FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            try
            {
                int length = (int)fileStream.Length;  // get file length
                buffer = new byte[length];            // create buffer
                int count;                            // actual number of bytes read
                int sum = 0;                          // total number of bytes read

                // read until Read method returns 0 (end of the stream has been reached)
                while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
                    sum += count;  // sum is a buffer offset for next reading
            }
            finally
            {
                fileStream.Close();
            }
            return buffer;
        }

        public string GetFilePath()
        {
            return HttpContext.Current.Server.MapPath("~/Images/money.png");
        }

I don't get why it is not working because the FileStream constructor allow using relative path.


Solution

  • I'm assuming the folder in your program has the subfolder images, which contains your image file.

    \folder\program.exe

    \folder\Images\money.jpg

    Try without the "~".