逐行文件 io 在 Windows 中无法按预期工作

Posted

技术标签:

【中文标题】逐行文件 io 在 Windows 中无法按预期工作【英文标题】:LIne-by-line file-io not working as expected in Windows 【发布时间】:2013-10-30 20:29:09 【问题描述】:

我在 Windows 环境中使用来自 Strawberry 的 Perl 5.16.1。我有一个读取非常大的文本文件的 Perl 脚本。最小的文本文件是 30M。在读取最后一行末尾没有换行符的文件时,我会得到非常奇特的结果。它可能不会一直发生,但是当它发生时,就好像它正在从 I/O 系统中读取我之前使用 Perl 脚本打开的另一个文件的缓存数据。如果我手动编辑文件并添加换行符,那很好。我添加了一个行计数器和一些内联代码来显示当我接近文件末尾时会发生什么,以确保我不会发疯。为了尝试修复,我尝试将其添加到我的脚本中:

open (SS_LOG, ">>", $SSFile) or die "Can't open $SSFile\r\n $!\r\n";
print SS_LOG "\r\n";
close SS_LOG;

但它什么也没做。该文件保持相同的大小。我还将数据存储在大型数组中。

有没有其他人见过这样的事情?

【问题讨论】:

也许$SSFile 不是你想的那样?用printf "The size of %s is %d\n", $SSFile, -s $SSFile; 语句包装你的修复。 (我预测文件将增长 3 个字节。) 【参考方案1】:

尝试取消缓冲您的输出:

SS_LOG->autoflush(1);

【讨论】:

在关闭时不应该刷新吗?

以上是关于逐行文件 io 在 Windows 中无法按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

UIActionSheet 无法在 iOS9 中按预期显示

在 ionic 3 中,branch.io deeplink 无法按预期工作

没有缓存的 iOS NSURLSessionConfiguration 无法按预期工作

Python:strftime() UTC 偏移量在 Windows 中无法按预期工作

在一个非常大的文件中逐行读取特定的行

JSON 在 iOS 上无法按预期工作