id3タグを読むためにフルmp3ファイルを読み込もうとしています。それは私がファイルに気付いたときです:read( "* a")は明らかに完全なファイルではなく、むしろ小さな部分を読み込みます。ルアで全ファイルを読む
私のテストファイル用function readAll(file)
local f = io.open(file, "r")
local content = ""
local length = 0
while f:read(0) ~= "" do
local current = f:read("*all")
print(#current, length)
length = length + #current
content = content .. current
end
return content
end
、これは〜113KB(ファイル全体の合計を読んで、256の読み出し動作が実行されていることを示しています。だから私は、ファイル全体の内容を取得するために、回避策のいくつかの種類を構築しようとしました〜7MBです)。これは大部分のid3タグを読み込むのに十分なはずですが、なぜLuaがこのように動作するのだろうと思います(特に、* .ojや* .aseなどの大きなテキストベースのファイルを読み込んでいないためです)。この動作や、ファイル全体を確実に読み取るための解決策について何か説明はありますか?
窓がありますか?バイナリモード( "rb"からio.open)でファイルを開くことを確認してください – daurnimator
Argh、それがポイントでした。以前はバイナリモードを使用していたことはありません。大いに感謝する! –
誰かが関数 'f:read(" * all ")'で*** all **の形式を説明できますか? 「* all」は「* a」に等しいと思われますか?私はドキュメントをluaマニュアルで見つけることができませんでしたhttps://www.lua.org/manual/5.1/manual.html#pdf-file:read –