私はScalaのCSVファイルの最初の行だけを取得したいと思いますが、getLine(0)を使用せずにどうしたらいいですか(廃止予定です)?Scalaのファイルから最初の行を取得する方法
3
A
答えて
7
FWIWは、ここ(標準ライブラリ/ wのこだわりの)私はどうなるのかです:注意すべき
def firstLine(f: java.io.File): Option[String] = {
val src = io.Source.fromFile(f)
try {
src.getLines.find(_ => true)
} finally {
src.close()
}
}
物事:それは常に1を返しますので、
- 機能は、
Option[String]
代わりのList[String]
を返します。またはなし。これはもっと慣用的なScalaです。 src
もファイルを開くことができることを非常にオフのチャンスで、適切に閉じられているが、読書は- 例外をスロー
Iterator
の最初の項目を取得するために.find(_ => true)
を使用すると、私は偉大な感じさせるが、ありますありませんnextOption
メソッドであり、これは中間のList
に変換するよりも優れています。 IOException
ファイルのオープンまたは読み込みが行われます。
私はまた、あなたのリソースを管理し、自動的にあなたがする必要がある場合は、ファイルを閉じるためのより良いAPIを与えることscala-armライブラリを使用することをお勧めします。
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. djangoのクエリーセットから最初のオブジェクトを取得する最速の方法は?
- 2. クエリの最初の行からフィールドを取得する
- 3. ディレクトリから最新のファイルを取得する方法
- 4. データベース行から最高の値を取得する方法は?
- 5. DBの最初と最後のレコードを取得する方法
- 6. Erlangファイルから最初の5行を読み取る
- 7. C++のファイルから行番号を取得する方法は?
- 8. ListViewは.csvファイルの最初の行を取得します
- 9. TWIG配列から最初の項目を取得する方法
- 10. has_and_belongs_to_many関係の最初の行を取得する方法postgres sql
- 11. jspでリストの最初の要素を取得する方法
- 12. BigDecimalの最初の非ゼロ桁を取得する方法
- 13. std :: mapの最初のn要素を取得する方法
- 14. バイナリファイルの最初の10バイトを取得する方法
- 15. ファイルの最初のn行を結合する方法
- 16. GUIDの最初の4バイトからInt32を取得する最善の方法は何ですか?
- 17. 最初の10行をファイルから開かずに(perlで)取得する最善の方法は何ですか?
- 18. Androidのhtmlファイルからコンテンツを取得する最善の方法
- 19. plsql - 最初の行を取得する - どちらが良いですか?
- 20. NSCalendarから1ヶ月の最初の日を取得する
- 21. GridViewの最初の列からIDを取得する
- 22. Matlab Mファイルのテキストの最初の行を取得するには?
- 23. パンダのデータフレームの最初の数行を読み取る方法
- 24. 現在の月の最初と最後の日を取得する方法
- 25. Scala Breezeのファイルから行列を読み取る
- 26. JOINを使用してテーブルから最新の行を取得する方法
- 27. サーバー上のapkファイルから最終更新日を取得する方法
- 28. リストから最初のxアイテムを取得する
- 29. int/floatから最初の3桁を取得する
- 30. DataViewから最初の10レコードを取得するには?
この方法では、ファイルディスクリプタを閉じることができません。これをあまりにも頻繁に行うと、最終的にはあまりにも多くのファイルを開くことになります。 – leedm777
それを捕まえていなかった、ありがとう! – dave