嗨,我有一个问题要解决大学问题,我很难理解问题的句子。
这是我遇到的问题:
从文件中反转字节顺序而不立即将整个文件加载到内存中。您必须在C#,Java,PHP和Python中解决此问题。
现在有两件事我不明白。
首先,我不确定字节是否引用文件的实际字符,或其他内容。问题不会说明它是否是文本文件。
其次我不确定如何在没有实际加载到内存中的情况下打开文件。
这就是我将如何正常处理这个问题,但我认为如果我这样做,文件会被加载到内存中:
string fileName = 'file.txt';
reader = new StreamReader(fileName);
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line + "\n");
}
此外,如果我当时正在阅读一行,我不确定如何实际反转所有字符。
编辑很抱歉以多种语言发帖我不想解决问题的方法我只想澄清它,所以我可以自己解决。我认为因为我必须在四个解决它这个概念适用于所有4种不同的语言,谁回答无关紧要
答案 0 :(得分:1)
打开FileStream
并使用Seek
方法转到文件末尾。从那里,向后,一次读取一个字节。这将以相反的顺序阅读。因此,在您到达文件的开头之前,请循环:
read 1 byte
// do whatever you want with that byte...write to another file?
seek back 2 bytes
关于效率,您可以在内存中读取1024字节的缓冲区。这样,您就不会对文件的每个字节发出Read
次操作。填充缓冲区后,将其反转,然后就可以了。