打开文件而不立即将其加载到内存中

时间:2013-04-06 11:45:04

标签: c#

嗨,我有一个问题要解决大学问题,我很难理解问题的句子。

这是我遇到的问题:

  

从文件中反转字节顺序而不立即将整个文件加载到内存中。您必须在C#,Java,PHP和Python中解决此问题。

现在有两件事我不明白。

首先,我不确定字节是否引用文件的实际字符,或其他内容。问题不会说明它是否是文本文件。

其次我不确定如何在没有实际加载到内存中的情况下打开文件。

这就是我将如何正常处理这个问题,但我认为如果我这样做,文件会被加载到内存中:

     string fileName = 'file.txt';
     reader = new StreamReader(fileName);

     string line;
     while ((line = reader.ReadLine()) != null)
     {
          Console.WriteLine(line + "\n");
     }

此外,如果我当时正在阅读一行,我不确定如何实际反转所有字符。

编辑很抱歉以多种语言发帖我不想解决问题的方法我只想澄清它,所以我可以自己解决。我认为因为我必须在四个解决它这个概念适用于所有4种不同的语言,谁回答无关紧要

1 个答案:

答案 0 :(得分:1)

打开FileStream并使用Seek方法转到文件末尾。从那里,向后,一次读取一个字节。这将以相反的顺序阅读。因此,在您到达文件的开头之前,请循环:

read 1 byte
// do whatever you want with that byte...write to another file?
seek back 2 bytes

关于效率,您可以在内存中读取1024字节的缓冲区。这样,您就不会对文件的每个字节发出Read次操作。填充缓冲区后,将其反转,然后就可以了。