Ruby文件mtime排序问题

时间:2018-08-02 12:12:05

标签: ruby file sorting filemtime

我有两个过程,一个用于顺序创建一组文件,另一个过程是按相同的顺序逐个读取。

第一个过程是依次创建文件,然后移至另一个目录,如下所示。

file = File.open(file_path, "a:UTF-8")
file.write "Write something.."
file.write "Write something.."
file.write "Write something.."
file.close
FileUtils.mv(file_path, new_dir) #move the file to another directory

第二个过程应该完全按照创建文件的顺序读取文件。所以我要按mtime整理文件,读取然后删除文件。

files = Dir.glob(new_dir + "*").sort_by{ |f| File.mtime(f) }
if !files.empty?
  files.each do |file|
    # reads the file delete it
  end
end

这在大多数情况下都是有效的,但是奇怪的是,有时稍后读者创建的后来创建的文件会破坏顺序。

我注意到在这种情况下常见的一件事是第n个文件比第n + 1个文件大得多。但是应该不成问题,因为我要依次创建文件并使用mtime进行排序。

我在这里很难找到根本原因。是因为I / O如何处理带下划线的文件?可能是因为File.mtime不考虑毫秒?但是我在每次创建文件之间增加了1秒的睡眠时间,这减少了出现的次数,但仍然会发生。

0 个答案:

没有答案