Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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/8/file/3.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#_File - Fatal编程技术网

C# 用字节数组存储文件与用文件流读写文件?

C# 用字节数组存储文件与用文件流读写文件?,c#,file,C#,File,我正在编写一个修改文件的程序,我想知道我使用它的方式是否是错误的 该文件存储在另一个文件中的块中,并由一组哈希分隔。它的大小只有1mb左右,所以我只需计算它的位置一次,然后将它读入字节数组,然后像那样处理它 我想知道把整个文件(不管大小)读入内存中的字节数组是否是一种可怕的编程习惯。这是我的程序的唯一目的,也是它占用的唯一内存。如果你不必这样做,它会像大多数占用内存的活动一样可怕。这完全取决于你将要读取的文件的预期大小(范围)。如果您的输入文件的大小可以超过100 MB,那么这种方法就没有多大意

我正在编写一个修改文件的程序,我想知道我使用它的方式是否是错误的

该文件存储在另一个文件中的块中,并由一组哈希分隔。它的大小只有1mb左右,所以我只需计算它的位置一次,然后将它读入字节数组,然后像那样处理它


我想知道把整个文件(不管大小)读入内存中的字节数组是否是一种可怕的编程习惯。这是我的程序的唯一目的,也是它占用的唯一内存。

如果你不必这样做,它会像大多数占用内存的活动一样可怕。

这完全取决于你将要读取的文件的预期大小(范围)。如果您的输入文件的大小可以超过100 MB,那么这种方法就没有多大意义

如果您的输入文件相对于您的软件将运行的机器的内存来说很小,并且您的程序设计得益于将全部内容存储在内存中,那么这并不可怕;这是明智的


但是,如果您的软件实际上不需要将整个文件的内容存储在内存中,那么这样做就没有太大的理由(即使是较小的文件)

如果您需要对文件进行随机读/写访问才能对其进行修改,那么将其读入内存可能是可以的,只要您能够确保文件永远不会超过某个大小(您不希望将几百MB的文件读入内存)


通常使用流读取器(如a)并边走边处理数据是一个更好的选择。

我可以理解内存占用(可能)的要点,但这会占用CPU吗?@M.Babcock将数据从磁盘编组到内存肯定涉及一些读和移动指令。@robjb-可能,但不足以称为“占用”。此外,它们是读取和移动指令,无论是否将整个文件读取到内存,都必须执行这些指令。更糟糕的是,在磁盘上执行随机访问操作,而不仅仅是在内存中。@M.Babcock好的一点,我完全同意。我只是想提一下,CPU时间肯定是被使用的。这取决于你在什么时候称某个东西为“猪”。我通常把它定义为当某个东西使用的东西比它需要的多得多。当你只需要一个已知的部分就可以阅读整个文件(依我看)。好的,很好,我就是这么想的。文件的大小通常在500kb到1.5mb之间,使用该程序的人通常会有2gb或更多的RAM。此外,当文件被修改时,还可以在其他地方打开该文件。它也不会超过1.5mb。