Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# StreamWriter未写入现有文件_C#_Streamwriter - Fatal编程技术网

C# StreamWriter未写入现有文件

C# StreamWriter未写入现有文件,c#,streamwriter,C#,Streamwriter,我正在尝试使用StreamWriter向文件中写入一些文本,并获取 FolderDialog选定文件夹中文件的路径。如果 文件不存在。但是,如果文件已经存在,它将抛出异常 文件正被其他进程使用 using(StreamWriter sw = new StreamWriter(FolderDialog.SelectedPath + @"\my_file.txt") { sw.writeLine("blablabla"); } 现在如果我这样写: using(StreamWriter sw

我正在尝试使用StreamWriter向文件中写入一些文本,并获取 FolderDialog选定文件夹中文件的路径。如果 文件不存在。但是,如果文件已经存在,它将抛出异常 文件正被其他进程使用

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文件夹”?