C# StreamWriter未写入现有文件
我正在尝试使用StreamWriter向文件中写入一些文本,并获取 FolderDialog选定文件夹中文件的路径。如果 文件不存在。但是,如果文件已经存在,它将抛出异常 文件正被其他进程使用C# StreamWriter未写入现有文件,c#,streamwriter,C#,Streamwriter,我正在尝试使用StreamWriter向文件中写入一些文本,并获取 FolderDialog选定文件夹中文件的路径。如果 文件不存在。但是,如果文件已经存在,它将抛出异常 文件正被其他进程使用 using(StreamWriter sw = new StreamWriter(FolderDialog.SelectedPath + @"\my_file.txt") { sw.writeLine("blablabla"); } 现在如果我这样写: using(StreamWriter sw
using(StreamWriter sw = new StreamWriter(FolderDialog.SelectedPath + @"\my_file.txt")
{
sw.writeLine("blablabla");
}
现在如果我这样写:
using(StreamWriter sw = new StreamWriter(@"C:\some_folder\my_file.txt")
using(StreamWriter sw = File.AppendText(Path.Combine(FolderDialog.SelectedPath, @"my_file.txt")))
它可以与现有文件一起使用。这是一个便宜的答案,但是您尝试过这种解决方法吗
string sFileName= FolderDialog.SelectedPath + @"\my_file.txt";
using(StreamWriter sw = new StreamWriter(sFileName))
{
sw.writeLine("blablabla");
}
我建议的另一件事是验证FolderDialog.SelectedPath+“\my_file.txt”是否等于硬编码路径“C:\some_folder\my_file.txt”。检查该文件是否被其他进程使用 要执行此操作,请运行,按Ctrl+F,键入文件名,然后单击“查找” 另一方面,完成这项任务的最佳方式如下:
using(StreamWriter sw = new StreamWriter(@"C:\some_folder\my_file.txt")
using(StreamWriter sw = File.AppendText(Path.Combine(FolderDialog.SelectedPath, @"my_file.txt")))
编辑:不要在
路径的第二个参数中添加斜杠。合并
文件已在使用中,因此无法覆盖。但是,请注意,此消息并不总是完全准确的-实际上,您自己的进程可能正在使用该文件。检查您的使用模式。这可能与您组合路径和文件名的方式有关。尝试一下:
using(StreamWriter sw = new StreamWriter(
Path.Combine(FolderDialog.SelectedPath, "my_file.txt"))
{
sw.writeLine("blablabla");
}
此外,请检查以确保FolderDialog.SelectedPath值不为空。:) 试试这个
using (StreamWriter sw = File.AppendText(@"C:\some_folder\my_file.txt"))
{
sw.writeLine("blablabla");
}
它只在现有文件中工作,因此要验证文件是新的还是已经存在,请执行以下操作
string path = @"C:\some_folder\my_file.txt";
if (!File.Exists(path))
{
// Create a file to write to.
using (StreamWriter sw = File.CreateText(path))
{
//once file was created insert the text or the columns
sw.WriteLine("blbalbala");
}
}
// if already exists just write
using (StreamWriter sw = File.AppendText(@"C:\some_folder\my_file.txt"))
{
sw.writeLine("blablabla");
}
FolderDialog.SelectedPath返回的是什么?只是“某个文件夹”还是“c:\some\u文件夹”?