c# - StreamReader 提示文件不存在,但它确实存在

标签 c# localization streamreader filenotfoundexception

我有一个本地化的应用程序,可以在整个欧洲使用。

我有一个从磁盘加载文件的菜单选项。

此操作在我的开发机器上运行良好,但在我用来测试其他操作系统(例如法语、西类牙语等)的虚拟机上不起作用。

当 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/

相关文章:

c# - 文件流没有完成写入文件

c# - 使用 streamreader/streamwriter 在 C# 中逐行写入文件非常慢

C# 将旧接口(interface)函数携带到新接口(interface)

c# - 如何在开始写入 ASP.NET Core 中的 HttpContext.Response.Body 流后更改 http 状态代码?

Silverlight ValidatesOnException 默认消息本地化

python - Django naturaltime 本地化错误

c# - 如何检测 .NET StreamReader 是否在基础流上找到 UTF8 BOM?

c# - 将 Linq 表达式作为字符串传递?

c# - 如何在没有嵌套类的情况下在 Azure Functions 中共享扩展方法?

visual-studio-2010 - 创建本地化的 WIX 3.6 Bootstrap 。