Clojure - 逐行读取大文件,换行符使用不同的字符

时间:2015-07-27 14:12:12

标签: clojure

我需要逐行读取大型csv文件。我唯一的问题是这个文件没有使用\ n作为换行符,而是使用char 2.所以我需要的是行line-seq,但能够指定换行符。

1 个答案:

答案 0 :(得分:1)

我对用例很感兴趣;)

所以我建立了一个快速的图书馆,希望能够完成这项工作。

https://github.com/hellonico/custom-reader

基本上由2个测试用例解释,所以复制粘贴在这里:

使用文件test.txt

thisisaline 2thisisanotherline2thisisathirdline

这给出了:

(deftest test-with-special-line-ending-char-has-3-lines
 (let [
   rdr (custom.java.BufferedReader. (java.io.FileReader. "resources/test.txt") \2)
  ]
  (is (= 3 (count (line-seq2 rdr))))))

使用常规文件:

this is
counted
as
only one line

这给出了

   (deftest test-with-normal-line-endings    (let [
      rdr (custom.java.BufferedReader. 
            (java.io.FileReader. "resources/test2.txt") \2)
     ]
     (is (= 1 (count (line-seq2 rdr))))))

让我们看看这是否通过了你的大型csv测试。