2

我有一个文件存储在我的应用程序目录中,他有一些站点列表。我读它没有任何问题,但是当我想写它时,我得到了

System.ArgumentException: Stream is not writeable

这就是我访问文件的方式:

  FileStream theTextFileStream = new FileStream(Environment.CurrentDirectory + "/fourmlinks.txt",FileMode.OpenOrCreate);

这是让我期待的功能:

public static void WriteNewTextToFile(string text, FileStream theFile)
    {
        string fileText = GetAllTextFromFile(theFile);
        ArrayList fileLIst = populateListFromText(fileText);

        using (StreamWriter fileWriter = new StreamWriter(theFile))
        {
            fileWriter.Write(String.Empty);
            for (int i = 0; i < fileLIst.Count; i++)
            {
                fileWriter.WriteLine(fileLIst[i].ToString());        
            }
        }
    }

该函数读取旧文本和新文本并将其添加到数组中。然后我从所有东西中清除文件,并用我制作的 arry 中的新旧数据重写它。

我不知道这是否会有所帮助,但这是文件属性:

Build Action: None
Copy To Out Put Directory: Copy always

为什么我不能重写文件?

这是我用来读取文件内容的函数:

public static string GetAllTextFromFile(FileStream theFile)
    {
        string fileText = "";

        using (theFile)
        {
            using (StreamReader stream = new StreamReader(theFile))
            {
                string currentLine = "";
                while ((currentLine = stream.ReadLine()) != null)
                {
                    fileText += currentLine + "\n";
                }

            }
        }

        return fileText;

    }
4

1 回答 1

3

您必须使用读/写文件访问作为third参数 -

FileStream theTextFileStream = new FileStream(Environment.CurrentDirectory + "/fourmlinks.txt",FileMode.OpenOrCreate, FileAccess.ReadWrite
);

重要 - 删除using(theFile)声明:

public static string GetAllTextFromFile(FileStream theFile)
{
        string fileText = "";

        using (StreamReader stream = new StreamReader(theFile))
        {
            string currentLine = "";
            while ((currentLine = stream.ReadLine()) != null)
            {
                fileText += currentLine + "\n";
            }

        }


    return fileText;

}

不要using在您的情况下使用构造,因为它会关闭基础流,因为在您的情况下您必须手动openclose stream对象。

这也将允许您写入文件。

有关更多信息,请参阅以下链接 -

于 2012-10-17T20:42:29.380 回答