में पूरी फाइलें पढ़ना मैं id3 टैग को पढ़ने के लिए एक पूर्ण एमपी 3 फ़ाइल पढ़ने की कोशिश कर रहा हूं। जब मैंने देखा कि फ़ाइल: पढ़ा ("* ए") स्पष्ट रूप से पूर्ण फ़ाइल नहीं बल्कि एक छोटा सा हिस्सा पढ़ता है।लुआ
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
मेरी testfile के लिए
, इस से पता चलता है कि 256 पढ़ने संचालन प्रदर्शन कर रहे हैं, ~ 113kb (पूरी फ़ाइल की कुल पढ़ने: तो मैं क्रम में समाधान किसी तरह का निर्माण करने के लिए पूरे फ़ाइल की सामग्री प्राप्त करने की कोशिश ~ 7 एमबी है)। यद्यपि यह अधिकांश id3 टैग पढ़ने के लिए पर्याप्त होना चाहिए, मुझे आश्चर्य है कि क्यों लुआ इस तरह से व्यवहार करता है (विशेष रूप से क्योंकि यह बड़ी टेक्स्टबैस्ड फ़ाइलों जैसे * .oj या * .ase) को पढ़ता नहीं है। क्या इस व्यवहार के लिए कोई स्पष्टीकरण है या शायद पूरी फ़ाइल को विश्वसनीय रूप से पढ़ने का समाधान है?
क्या आप विंडोज़ पर हैं? सुनिश्चित करें कि आप फ़ाइल को द्विआधारी मोड ("आरबी" से io.open) – daurnimator
Argh में खोलें, यह बिंदु था। पहले कभी बाइनरी मोड का उपयोग नहीं किया था। आपका बहुत बहुत धन्यवाद! –
कोई व्यक्ति प्रारूप में समझा सकता है *** सभी ** समारोह में 'f: read ("* all") '? ऐसा लगता है कि "* सब" बराबर है "* ए"? मुझे लूआ मैनुअल में दस्तावेज़ नहीं मिला https://www.lua.org/manual/5.1/manual.html#pdf-file:read –