Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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#中可以打开的最大文件数有限制吗?_C#_.net_File_File Io - Fatal编程技术网

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

在C#中可以打开的最大文件数有限制吗?,c#,.net,file,file-io,C#,.net,File,File Io,我正在制作一个应用程序,它需要同时打开至少676个文件,最多1400个文件。我将使用StreamWriter类写入这些文件,并使用StreamReader类读取数据。那么,像下面的链接中描述的VC++一样,在C#中可以同时打开以进行读写的文件数量是否有最大限制。 . 这对我很有用: var streams = new Stream[10000]; for (var i = 0; i < streams.Length; i++) { streams[i] = File.Op

我正在制作一个应用程序,它需要同时打开至少676个文件,最多1400个文件。我将使用
StreamWriter
类写入这些文件,并使用
StreamReader
类读取数据。那么,像下面的链接中描述的VC++一样,在C#中可以同时打开以进行读写的文件数量是否有最大限制。 .

这对我很有用:

  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();
  }
var-streams=新流[10000];
对于(变量i=0;i{
流[index].WriteByte((字节)“B”);
});
任务[i].Start();
}
Task.WaitAll(任务);
对于(变量i=0;i
由.NET打开的文件的上限由Win32 API CreateFile的限制决定,即16384。

您是否达到了该限制,或者在尝试任何操作之前只是询问一下?您能解释一下为什么需要这样做吗?你的问题没有错,只是出于我自己的好奇心!那么,为什么不试着同时打开1400个文件,自己看看呢?我认为JMK的任务是什么,我也很感兴趣。@Voidpaw我说的不是
OpenFileDialog
,而是分别使用
StreamReader
StreamWriter
对文件进行“读”和“写”。