ファイルが変更されたかどうかを確認し、新しいデータのみを印刷する効率的な方法は何ですか?
もともと、行数を比較する readline アプローチに傾倒していましたが、それは非常に非効率的でした。
私の最初の質問は、Netlogo からファイル サイズまたはタイム スタンプを確認する方法があるかどうかでした。答えは「いいえ」でした。しかし、Charles Staelin は親切にも get-date-ms メソッドを pathdir 拡張に追加してくれました。そのため、ファイルの変更 (タイムスタンプによる) をチェックできるようになりましたset currenttimestamp pathdir:get-date-ms "somefile.nlist"
if currenttimestamp != filetimestamp
追加された方法を使用して:
to checkfile
ifelse checktick mod 19 = 0
[set currenttimestamp pathdir:get-date-ms "somefile.nlist"
if currenttimestamp != filetimestamp
[file-open "somefile.nlist"
let thiscount 0
while [not file-at-end?][
set in1 file-read-line
set global-in1 in1
set thiscount thiscount + 1
if thiscount > global-filelength AND (not file-at-end?)[ ;it seems that this not-at-file-end is redundant - why not?
print in1
set global-filelength thiscount
set hasfilechanged true
]
]
file-close
set filetimestamp currenttimestamp
set checktick checktick + 1
]
]
[ set checktick checktick + 1]
end