我想要從Scala中的CSV文件中獲得第一行,如何在不使用getLine(0)的情況下執行此操作(已棄用)?如何從Scala中的文件中獲取第一行
3
A
回答
7
FWIW,這裏是我會做什麼(粘瓦特/標準庫):
def firstLine(f: java.io.File): Option[String] = {
val src = io.Source.fromFile(f)
try {
src.getLines.find(_ => true)
} finally {
src.close()
}
}
注意事項:
- 該函數返回
Option[String]
代替List[String]
,因爲它總是返回一個或沒有。這是更通俗的斯卡拉。 - 的
src
正確關閉,即使是在非常起飛的機會,你可以打開該文件,但看完拋出一個異常 - 使用
.find(_ => true)
得到Iterator
的第一個項目沒有讓我感覺非常好,但有沒有nextOption
方法,這比轉換爲不使用的中間List
要好。 IOException
打開或讀取文件傳遞。
我還推薦使用scala-arm庫爲您提供更好的API來管理資源並在需要時自動關閉文件。
import resource._
def firstLine(f: java.io.File): Option[String] = {
managed(io.Source.fromFile(f)) acquireAndGet { src =>
src.getLines.find(_ => true)
}
}
10
如果你不關心使用後釋放文件資源,下面是一個非常convienient方式:
Source.fromFile("myfile.csv").getLines.next()
8
如果你想關閉的文件,你想要得到的空集,如果該文件實際上是空的,而不是拋出一個錯誤,然後
val myLine = {
val src = Source.fromFile("myfile.csv")
val line = src.getLines.take(1).toList
src.close
line
}
約,如果你限制自己的標準庫,你可以做到這一點的最短途徑。
相關問題
- 1. 如何從按鈕中的第一和第二行標題中獲取文本
- 2. 如何在bash腳本中獲取文件的第一行?
- 3. 如何讓Elasticsearch從文件的第一行獲取列名?
- 4. 如何從bash中的.csv文件的第一行獲取特定列?
- 5. Scala:如何從文件中讀取文本時刪除空行
- 6. 如何使用scala獲取事務中的第一條記錄?
- 7. 如何使用OleDbDataAdapter從Excel文件中只讀取第一行?
- 8. 如何從文件中讀取第一行?
- 9. 如何僅從java.sql.ResultSet獲取第一行?
- 10. 如何從JTable獲取第一行值
- 11. 如何從Scala中的列讀取行
- 12. 從文件中獲取行
- 13. 如何從bash中的文本文件讀取第n行?
- 14. 如何抓取文本文件中第一個10%的行?
- 15. 如何從c#中的文本文件中獲取某些行?
- 16. 獲取文本文件中每行的第一個字符
- 17. 如何從Spark中的文本文件中獲取第二個字段(使用scala)
- 18. 如何從表中的第一列獲取文本?
- 19. 從文本文件中讀取第5行最後一行
- 20. 如何從分組行中的第一行/最後一行獲取值?
- 21. 如何從多行文本中僅取第一行
- 22. 如何從組合零件的第一行獲取值?
- 23. Python:如何獲取目錄中的第一個文件?
- 24. 如何從表中獲取第一行值?
- 25. 如何從表中獲取第一個和其他隨機行
- 26. 如何從文件中獲取下一行
- 27. 如何從文檔中間提取第1行到第3行?
- 28. Scala中的文件讀取行
- 29. 從文本文件中的一行中獲取每個單詞
- 30. 獲取同一行中的第一列
從一個戴夫到另一個戴夫,此方法無法關閉文件描述符。經常這樣做,最終會打開太多文件。 – leedm777 2012-01-16 01:16:18
沒有抓到,謝謝! – dave 2012-01-16 02:33:40