编辑使用 Process.Start() 打开的文本文件时如何修复 "used by another process" 错误?
How to fix "used by another process" error when editing a text file which was opened using Process.Start()?
我正在用 C# 制作一个控制台应用程序。我用了一个Process.Start()
函数打开了一个文本文件,可以直接在记事本中编辑,程序等待记事本关闭。但是当试图保存文件时,会弹出一条警告消息说 "File being used by another process".
由于我是初学者,我不知道如何解决这个问题。我知道 FileAccess
、FileMode
、FileStream
,但我从未使用过它们,并且认为它们在这一点上没有帮助。
这是Main()方法之前的构造函数
public AccountApplication()
{
Process process = Process.Start("notepad.exe", textFilePath);
process.WaitForExit();
}
以及使用此构造函数的 Main() 方法的一部分
TextFileWriting:
AccountApplication openFile;
Console.Clear();
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("Enter a file name: ");
string filename = Console.ReadLine();
if (filename == "")
{
goto TextFileWriting;
}
textFilePath = Path.Combine(currentUserFolder, filename + ".txt");
if (File.Exists(textFilePath))
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("File You specified already has been created. Do you want to overwrite or edit it? (edit/overwrite)");
string userAnswer = Console.ReadLine();
if (userAnswer == "edit")
{
openFile = new AccountApplication();
goto MainMenu;
}
else if (userAnswer == "overwrite")
{
File.CreateText(textFilePath);
openFile = new AccountApplication();
goto MainMenu;
}
else if (userAnswer == "")
{
goto TextFileWriting;
}
}
else if (!File.Exists(textFilePath))
{
File.CreateText(textFilePath);
openFile = new AccountApplication();
goto MainMenu;
}
记事本已打开,程序正在等待关闭。用户无法做的一件事是保存所做的更改。
下面的行为您创建了一个 StreamWriter
:
File.CreateText(textFilePath);
它的用途是这样的:
using (var writer = File.CreateText(textFilePath))
{
writer.WriteLine("Hi!");
};
如果您不想向文件写入任何内容,请立即关闭 StreamWriter
:
File.CreateText(textFilePath).Close();
我正在用 C# 制作一个控制台应用程序。我用了一个Process.Start()
函数打开了一个文本文件,可以直接在记事本中编辑,程序等待记事本关闭。但是当试图保存文件时,会弹出一条警告消息说 "File being used by another process".
由于我是初学者,我不知道如何解决这个问题。我知道 FileAccess
、FileMode
、FileStream
,但我从未使用过它们,并且认为它们在这一点上没有帮助。
这是Main()方法之前的构造函数
public AccountApplication()
{
Process process = Process.Start("notepad.exe", textFilePath);
process.WaitForExit();
}
以及使用此构造函数的 Main() 方法的一部分
TextFileWriting:
AccountApplication openFile;
Console.Clear();
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write("Enter a file name: ");
string filename = Console.ReadLine();
if (filename == "")
{
goto TextFileWriting;
}
textFilePath = Path.Combine(currentUserFolder, filename + ".txt");
if (File.Exists(textFilePath))
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("File You specified already has been created. Do you want to overwrite or edit it? (edit/overwrite)");
string userAnswer = Console.ReadLine();
if (userAnswer == "edit")
{
openFile = new AccountApplication();
goto MainMenu;
}
else if (userAnswer == "overwrite")
{
File.CreateText(textFilePath);
openFile = new AccountApplication();
goto MainMenu;
}
else if (userAnswer == "")
{
goto TextFileWriting;
}
}
else if (!File.Exists(textFilePath))
{
File.CreateText(textFilePath);
openFile = new AccountApplication();
goto MainMenu;
}
记事本已打开,程序正在等待关闭。用户无法做的一件事是保存所做的更改。
下面的行为您创建了一个 StreamWriter
:
File.CreateText(textFilePath);
它的用途是这样的:
using (var writer = File.CreateText(textFilePath))
{
writer.WriteLine("Hi!");
};
如果您不想向文件写入任何内容,请立即关闭 StreamWriter
:
File.CreateText(textFilePath).Close();