读取后重写文本文件

时间:2012-10-17 20:27:10

标签: c# text text-files

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

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中。然后我从每件事物中清理文件,并用我制作的arry中的旧数据和新数据重写它。

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

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;

    }

1 个答案:

答案 0 :(得分: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个对象一样。

这也允许您在文件中写入。

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