0

我在java中有这段代码

public class read{ 
   private ArrayList <String[]> test = new ArrayList<String[]>(); 

    //arr is a valid array 
//br is a buffered reader
while(br.readline())
    test.add(store(arr[]));

public String[] store (String[] str_arr) {
    String a; 
    new_str_arr[] = new String[2];
    new_str_arr[1] = str_arr[0];
    new_str_arr[0] = "Header";
    return new_str_arr;
}

我怎么能把它转换成clojure?

4

2 回答 2

3

不清楚你想要什么,但是,如果想读取文本文件并将每一行存储到一个元素数组中,并且如果文件不是很大,你可以试试这个:

(use '[clojure.string :only (split)])
(split (slurp "file_name.txt") #"\r\n"))
于 2013-01-03T03:50:28.083 回答
0

不确定您要完成什么。您不会将 br.readLine() 的结果存储到 String 变量中,因此在您的程序中可能不会发生任何有趣的事情。从您提供的文字来看,也许这很接近:

(use 'clojure.java.io)
(with-open [rdr (reader "/tmp/test.txt")]
  (doall (map vector (line-seq rdr))))

Input file:
123
12
123
12
123
12
123
12
123

Output:
(["123"] ["12"] ["123"] ["12"] ["123"] ["12"] ["123"] ["12"] ["123"])

该文件是逐行读取的,而不是一次全部在内存中。然而结果是。doall是必需的,因为map返回一个惰性序列。当惰性序列的一个元素在 with-open 之外实现时,该文件将已经关闭。

于 2013-01-03T09:40:34.393 回答