仅打印唯一的数组元素到 Ruby 中的文件

Print only unique array elements to file in Ruby

我正在尝试将输出写入文件。但是当我写这段代码时,它是在多次写同一行。我怎样才能停止多次重复同一行?

Java_location 是我的输出。

这是我的代码:

a = []
a << java_location
File.open("/home/weblogic/javafoundmodified.txt", 'w+') do |file|
  a.each { |item| file.puts item }
end

我现在得到的输出是:

1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/jre/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/jre/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/jre/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/bin/java
1.7.0_65/u01/java/jdk1.7.0_65/jre/bin/java
1.7.0_65/u01/java/jdk1.7.0_65/jre/bin/java
1.7.0_65/u01/java/jdk1.7.0_65/jre/bin/java

考虑一下(使用 javalocation 中的示例数组):

javalocation = %w|
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.5.0/opt/itm/v6.2.2/JRE/lx8266/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/jre/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/jre/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/jre/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/bin/java
1.7.0_72/u01/java/jdk1.7.0_72/bin/java
1.7.0_65/u01/java/jdk1.7.0_65/jre/bin/java
1.7.0_65/u01/java/jdk1.7.0_65/jre/bin/java
1.7.0_65/u01/java/jdk1.7.0_65/jre/bin/java
|

File.open("/home/weblogic/javafoundmodified.txt", 'w+') do |file|
  javalocation.uniq.each { |line| file.puts line }
end