C# 创建和重影文件
我有这样的代码:C# 创建和重影文件,c#,windows,file,process,stream,C#,Windows,File,Process,Stream,我有这样的代码: string[] paths = { Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Test", folder }; string path = System.IO.Path.Combine(paths); if (!Directory.Exists(path)) Directory.CreateDirectory(path); path += "\\"; s
string[] paths = { Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Test", folder };
string path = System.IO.Path.Combine(paths);
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
path += "\\";
string p=path+"test.txt";
try
{
FileStream file = File.Create(p);
TextWriter tw = new StreamWriter(file);
tw.WriteLine("Test: " + 1);
tw.Close();
}
catch(Exception exc)
{
MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
我有测试1:
private void OpenStream(string p)
{
try
{
using (StreamReader s = new StreamReader(p, Encoding.UTF8))
{
MessageBox.Show(s.ReadToEnd(), "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
测试2:
private void OpenF(string p)
{
try
{
Process.Start(p);
}
catch(Exception exc)
{
MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
此代码在任何地方都可以正常工作,但有一个用户得到了以下结果:
Test1:好的,显示带有文本的消息
Test2:出现一条消息,其中包含文件不存在的信息。我在这个位置找不到文件,甚至目录“Test”文件夹的特定部分也没有出现
总之,stream可以从不存在的文件中读取文本。这怎么可能?如何防止这种情况
此问题仅适用于location Environment.SpecialFolder.LocalApplicationData。可能是权限问题。如果以管理员身份运行.exe,“Test1”将具有管理员权限,但“Test2”可能不具有管理员权限,因为它正在启动一个新进程。我考虑过权限,但目录/Test/folder/不存在。这太奇怪了。此问题仅适用于location Environment.SpecialFolder.LocalApplicationData。