리눅스 unzip
를 사용하여 상관하지 정말 하위 디렉토리에 대해 걱정하지 않는 경우 :
def unzip(file)
to = File.join(File.dirname(file), File.basename(file, ".*"))
Dir.mkdir(to) unless File.exists?(to)
`unzip -j #{file} -d #{to}`
end
# unzip('yourfile.zip')
이 방법은 ZipFile에 같은 이름을 가진 zip 파일과 같은 디렉토리에 새로운 디렉토리를 생성 (빼기). 그런 다음 모든 경로를 무시하고 해당 디렉토리로 zip 파일을 추출 (unzip
사용)합니다 (-j
플래그는 정크 경로로 unzip
에게 알려줍니다).
편집 귀하의 코멘트 당
을 여기에 시스템없이 할 수있는 방법은 호출입니다 :
def unzip(file)
Zip::ZipFile.open(file) do |zipfile|
to = File.join(File.dirname(file), File.basename(file, ".*"))
FileUtils.mkdir(to) unless File.exists? to
zipfile.each do |f|
if f.file? # Don't extract directories
fpath = File.join(to, File.basename(f.name))
zipfile.extract(f, fpath) unless File.exists?(fpath)
end
end
end
end
나는 루비 라이브러리 호출만을 사용하여 수행 할 수 있습니다. 시스템 호출이 없습니다. –
시스템 호출을 사용하지 않는 대안으로 내 대답을 업데이트했습니다. –