2016-12-29 27 views
0

ファイルを入力ストリームとして読み込み、ファイルの内容をscalaのリストに変換しようとしています。ここに私のコードはScalaのリストへのInputStream

val fileStream = getClass.getResourceAsStream("src/main/scala-2.11/com/dc/returnsModel/constants/abc.txt") 
val item_urls = Source.fromInputStream(fileStream).getLines.toList 

これは今では機能します。私はNullPointer例外を取得します。 これを修正するにはどうすればよいですか?

この作品(私はJARファイルにそれを使用するカント)

val item_urls = Source.fromFile("src/main/scala-2.11/com/dc/returnsModel/constants/aa.txt").getLines.toList 
+0

あなたが直面している実際の問題とは何ですか? –

+0

@ LukaJacobowitz編集 – ihmpall

+0

[Javaのクラスパスから実際にテキストファイルを読み込む方法](http://stackoverflow.com/questions/1464291/how-to-really-read-text-file-from-classpath-in) -java) –

答えて

1

getClass.getResourceAsStreamはフルパスを期待していないしかし、それは同じクラスローダを使用してクラスパスに要求されたファイルを検索現在のクラスとして。 getClassによって返されたクラスを使用すると、ロードしようとしているファイルと同じパッケージ内にある場合

  • (:これは、このコードを呼び出すプロジェクトとクラスの構造上のビットを依存修正

    com.dc.returnsModel.constants)、その後、あなたは単にファイル名を参照する必要がありのみ:

    getClass.getResourceAsStream("abc.txt") 
    
  • getClassによって返されたクラスがdifferenに常駐している場合トンパッケージ、クラスパスのルートを表す/で始まる必要があり、パスは、したがって、パッケージ名が従わなければならない:あなたがルートから正しいパスを提供する必要が

    getClass.getResourceAsStream("/com/dc/returnsModel/constants/abc.txt") 
    
0

。 ここでrootは、あなたのケースでsrc/scala-2.11フォルダの先頭です。

一例

object SO extends App { 
    val resourceStream = SO.getClass.getResourceAsStream("/com/sm.txt") 
    println(Source.fromInputStream(resourceStream).getLines.toList) 
} 
関連する問題