ruby: `Lesen': Invalid argument(Errno::EINVAL) an Datei.Lesen
Mache ich ein einfaches Skript, um zu überprüfen, crc von allen Dateien...
require "zlib"
exit if Object.const_defined?(:Ocra)
files = Dir.glob("*")
File.open('dir.txt', 'a+') do |file|
file.puts files
end
File.read('dir.txt').each_line { |line|
file = File.read(line) ; nil
file_crc = Zlib.crc32(file,0).to_s(16)
puts line, file_crc
}
Das problem ist in der Zeile File.read('dir.txt').each_line { |line|
Ich bekomme diese Fehlermeldung:
test.rb:13:in `read': Invalid argument - 1.exe (Errno::EINVAL)
from C:/Users/Administrador/Desktop/1.rb:13:in `block in <main>'
from C:/Users/Administrador/Desktop/1.rb:12:in `each_line'
from C:/Users/Administrador/Desktop/1.rb:12:in `<main>'
PD: 1.exe
ist eine Datei aufgelistet, in der "dir.txt".
InformationsquelleAutor ElektroStudios | 2012-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie überprüft, dass die Zeile nicht enthalten zusätzliche Zeichen?
p line
.IIRC
line
enthält das Zeilenende-Zeichen verwendenline.chomp
.File.read(line.strip)
ist wohl die robustere Variante. Esp. wenn Sie windows-line-endings von\r\n
. Obwohl Sie dann nicht haben können von Leerzeichen am Anfang und Ende des Dateinamens, weiß nicht, ob windows selbst ermöglicht.ich bin mit der Variante Empfehlung, nochmals vielen Dank
InformationsquelleAutor Karoly Horvath