私は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. 最初の行から現在の行への最大値の取得方法
- 2. Anyから最初の要素を取得する方法
- 3. リストボックスから最初の値を取得する方法
- 4. ディレクトリ内のすべてのHDFSファイルから最初の行を取得する方法はありますか?
- 5. S3上のファイルの最初の100行を取得する方法は?
- 6. Laravelの関係の最初の行を取得する方法
- 7. 段落の最初の行を取得する方法
- 8. ファイルから最後の行を取得
- 9. djangoのクエリーセットから最初のオブジェクトを取得する最速の方法は?
- 10. SAS最初の数行を条件で取得する方法
- 11. 一連のデータから最初の行を取得するXSLT
- 12. クエリの最初の行からフィールドを取得する
- 13. 参加から最初の行だけを取得する
- 14. ディレクトリから最新のファイルを取得する方法
- 15. 複数のファイルから行を取得する最も簡単な方法
- 16. データベース行から最高の値を取得する方法は?
- 17. DBの最初と最後のレコードを取得する方法
- 18. Erlangファイルから最初の5行を読み取る
- 19. Python - txtファイルから最初の2行を読み取る
- 20. テーブルから1つの外部キーに対して最初と最後の行を取得する方法
- 21. C++のファイルから行番号を取得する方法は?
- 22. タイプを返すクエリから最初の値を取得する方法は?
- 23. ListViewは.csvファイルの最初の行を取得します
- 24. リンクリストの文字列から最初の文字を取得する方法は?
- 25. レビュー一覧から最初の5つの画像を取得する方法
- 26. Scala:データフレーム内の行の範囲を取得する方法
- 27. 2位から戻り値を取得する方法。最初のシェルスクリプトの実行。シェル実行? (Unix Korn Shell)
- 28. sys.stdinから最初のN行をPythonの行ごとに取得する方法
- 29. Kotlin:一致する最初の行のキャプチャグループを取得する方法は?
- 30. golangのpostgresの最初の行のjsonのキーを取得する方法は?
この方法では、ファイルディスクリプタを閉じることができません。これをあまりにも頻繁に行うと、最終的にはあまりにも多くのファイルを開くことになります。 – leedm777
それを捕まえていなかった、ありがとう! – dave