我有一个本地化的应用程序,可以在整个欧洲使用。
我有一个从磁盘加载文件的菜单选项。
此操作在我的开发机器上运行良好,但在我用来测试其他操作系统(例如法语、西类牙语等)的虚拟机上不起作用。
当 StreamReader 尝试打开文件时会生成 FileNotFoundException。
它说“'找不到文件 C:\Program Files\MyCompany\MyTool\bin\Files\debug.txt'”
事实是,该文件确实存在,位于正确的位置并具有正确的文件名。
目标(法语)操作系统上的目录名称与开发机器相同。
有什么想法吗?
string ourPath = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
try
{
System.IO.StreamReader sr = System.IO.File.OpenText(ourPath + @"\bin\Files\debug.txt");
string input = null;
while ((input = sr.ReadLine()) != null)
{
m_text.Append(input);
}
sr.Close();
}
catch (System.IO.FileNotFoundException)
{
MessageBox.Show("LoadDebugOptions: File Not Found: " + ex.Message);
}
最佳答案
好的,找到问题了。
确定操作系统正在将资源管理器中显示为“debug.txt”的文件读取为“debug.txt.txt”。
这是通过调用 System.IO.Directory.GetFiles 列出目标目录中的文件来确定的。
如果我删除 .txt 扩展名以便 Windows 资源管理器将其显示为“调试”,则可以找到该文件。
原来资源管理器在目标机器上隐藏了已知类型的文件扩展名。
FYI ----------------------------------------------------------------
Open Explorer, Select Tools->Folder Options then the View Tab.
Scroll down and uncheck "Hide extensions for Known file types".
关于c# - StreamReader 提示文件不存在,但它确实存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146652/