可以在C#中打开的最大文件数是否有限制?

时间:2013-11-29 16:03:03

标签: c# .net file file-io

我正在创建一个应用程序,它需要同时打开至少676个文件到最多1400个文件。我将使用StreamWriter类写入这些文件,并使用StreamReader类读取数据。因此,对于可以同时打开以便在C#中读取或写入的文件的最大限制,就像VC ++一样,如下面的链接所述。 Is there a limit on number of open files in Windows

2 个答案:

答案 0 :(得分:7)

.NET打开的文件的上限受Win32 API CreateFile强加的限制,即16384。

答案 1 :(得分:6)

这对我有用:

  var streams = new Stream[10000];
  for (var i = 0; i < streams.Length; i++) {
    streams[i] = File.OpenWrite(Path.Combine(Path.GetTempFileName()));
    streams[i].WriteByte((byte)'A');
  }
  var tasks = new Task[streams.Length];
  for (var i = 0; i < streams.Length; i++) {
    var index = i;
    tasks[i] = new Task(() => {
      streams[index].WriteByte((byte)'B');
    });
    tasks[i].Start();
  }
  Task.WaitAll(tasks);
  for (var i = 0; i < streams.Length; i++) {
    streams[i].Close();
  }