I'm trying file I/O in C# (haven't done so at all before since I'm a beginner). I put a simple text file containing "some text" (literally) in the solution's resources, wrote some code based on online tutorials and pressed F5 to build. I was expecting "some text" to show up in the console window, but an exception did!
Could not find file 'F:\VS\FileTesting\FileTesting\bin\Debug\some text'.
As I said above, "some text" is the content of the file and its name is "important.txt"
Here's the code I'm using:
try
{
/* using (StreamReader reader = new StreamReader(Properties.Resources.important))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
} */
string contents = File.ReadAllText(Properties.Resources.important);
Console.WriteLine(contents);
Console.WriteLine("Contents displayed successfully.");
Console.ReadKey();
}
catch (Exception e) {
MessageBox.Show("An error occured. Exception: " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
(the commented section above is from another post here, which explained how to read a file line by line)
Based on @JonSkeet's comment below, I think I found the cause: it looks like File.ReadAllText
reads and treats the contents of Properties.Resources.important
as a filename rather than text as intended. "some text" is the only thing it can find, thus it searches a file with that name in the build directory, which is nonexistent. What I did was rename the original file to "pointer.txt", wrote "important.txt" in it and used it as a pointer to the file I want to read.
I can get away with having it read an external file, but I want the file in my resources. Plus, I can't seem to make it an embedded one - the option is disabled. Does that also have to do anything?
Any help is appreciated.