c#无法在特定计算机中写入文件(已解决,但不知道原因)
本文关键字:解决 不知道 文件 计算机 | 更新日期: 2023-09-27 18:21:35
我有三台电脑要测试。
当我在XP(PC,这是我的开发平台)和Win7(PC)中通过程序编写文件时,两者都是有效的。
但在一台win7电脑(笔记本电脑)中,它无法写入,也不例外。
由于Win7(PC)可以完美地运行我的程序,我认为这不是Win7的问题。
我发现当我使用我的c#程序时,它可以读取但不能写入文件。
我试图将路径设置为c:''Users/Local/AppData,但仍然不起作用。。。
可以访问读写权限,我可以手动写入文件,所以可能不是因为内存泄漏。
我试着在管理员模式下打开我的程序。
我不知道我的程序不能在那台计算机上写文件的其他原因。
我还尝试创建目录为:
string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
if (!Directory.Exists(Path.Combine(appDataPath, "test")))
{
try
{
Directory.CreateDirectory(Path.Combine(appDataPath, "test"));
}
catch (Exception ex)
{
MessageBox.Show("" + ex.ToString());
}
}
该代码可以在PC(XP和Win7)上工作,但在笔记本电脑(Win7)中仍然不工作。。。
我还在CreateDirectory
方法下面使用MessgeBox.Show
,它可以弹出测试消息!(也就是说,CreateDirectory
的代码运行了,但当我查看父目录时,不存在我想创建的目录……(但在PC中,目录已经创建),我看到有人有同样的问题,但解决方案对我没有帮助……
写入文件的代码为:
try
{
StreamWriter file = new StreamWriter(System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + "''logfile.txt");
file.Write("test");
file.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
为什么奇怪的笔记本电脑不能通过我的程序写入文件?
编辑:
我的程序在文本框中有一些操作来记录要保存的数据,
操作是:当用户点击文本框时,osk.exe(小键盘)就会出现。在我的笔记本电脑中,当我想运行osk.exe时,它会显示错误……
osk.exe的代码是:
System.Diagnostics.Process.Start("" + System.Environment.SystemDirectory + "/osk.exe");
当我删除那个代码时,编写文件的代码就简单地工作了!
也许原因是我先选中空文本框,然后用户单击"保存"按钮来写入文件。由于代码尝试运行osk.exe时出现错误,文本框可能会返回null或其他内容,那么我的写文件代码将不会被操作。
我知道这几乎不可能,但我最近遇到了类似的问题:
如果没有得到异常,则可能是由于计算机上的.NET Framework版本不匹配导致的。这意味着,如果某个方法得到了您正在使用的新重载,并且它没有在以前版本的.NET中实现,那么它会在.NET内部抛出异常,而JIT编译器将尝试编译IL。
在以前的版本中,方法PropertyInfo.GetValue(object)->也有同样的问题。除了PropertyInfo.Get-Value(object,object[])之外,没有这样的方法
尝试(在项目属性中)设置与您在不工作的计算机上安装的框架匹配的目标框架。如果它编译了,那么你必须寻找另一个解决方案。