如何在Windows中引用特定文件夹?

时间:2013-06-05 11:27:51

标签: ruby rubygems zip

我从git下载旧代码(zip)文件。现在我想将文件夹位置称为加载路径,以便我可以使用代码来拆分zip,但我可以看到Split错误即将到来。我试过的代码是

$LOAD_PATH.unshift('c:/rubyzip/lib/zip')
require 'zip/zip'
part_zip_count = Zip::ZipFile.split("C:\junk\AWS Tools.zip", 10240, false)
puts "Zip file splitted in #{part_zip_count} parts"

使用$ LOAD_PATH.unshift是否正确?有帮助吗?如何将文件夹的位置称为加载路径?

1 个答案:

答案 0 :(得分:0)

问题似乎与脚本的require部分无关。

有几种不同的方法可以将文件夹添加到$LOAD_PATH,而.unshift就是其中之一。 $LOAD_PATH是一个数组,因此$LOAD_PATH << 'C:/Folder/'也可以使用。

您提到您收到有关split的错误消息。这告诉您脚本使其超过require部分。所以,你的问题出现在脚本的其他方面。

在检查Zip::Zipfile的{​​{3}}后,您会注意到该类没有方法.split。我建议阅读文档,了解满足脚本需求的可能方法。或许documentation正是您所寻找的。

一旦确定了正确的方法和重构,您将遇到另一个问题,即您希望与之交互的zip文件的路径。 Windows使用\(反斜杠)作为路径分隔符。但是,Ruby将其用作转义字符。

puts "First line\nNext line"
#=>First Line
#=>Next Line

这意味着Ruby将试图弄清楚'C:\ junk'中的\j是什么意思。您可以通过两种方式解决此问题。

  1. 使用正斜杠。 "C:/junk/AWS tools.zip"
  2. 使用File.join构建路径。 File.join("C:", "junk", "AWS tools.zip")。这样做意味着您不必担心Ruby认为路径分隔符是什么以及它不具备什么。它会为你担心。