1

作为之后的代码,我不想创建两次fileStream,所以我在fileStream中编写了streamWriter。但奇怪的是,当尝试实例化 StreamWriter 时,代码会抛出异常。我猜fs的读指针到达最后,但这只是一个猜测。我想知道为什么会遇到这个错误。请帮我!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace Stream
{
    class Program
    {
        static void Main(string[] args)
        {
            string fileName = "E:\\test.txt";
            using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
            {
                using (StreamReader r = new StreamReader(fs)) {

                }

                using (StreamWriter w = new StreamWriter(fs)) {
                    //exception when new StreamWriter(fs)
                    //stream is not writable.  why? why? why?
                }

                Console.ReadKey();
            }
        }
    }
}
4

1 回答 1

1

使用完(StreamReader r = new StreamReader(fs))后,代码会自动调用fs的close()。所以下次使用 fs 时,在 StreamWriter 的构造函数中有一个检查:if(steam ==null){throw new ArgumentException("stream is not writable")}。就在那里!

于 2015-03-11T00:41:36.963 回答