2017-12-15 5 views
0

Byte order markファイルからの読み込みにscala.io.Sourceを使用すると、正規表現に失敗することがあります。 This answerは、java.ioを使用する軽量ソリューションです。 scala.io.Sourceのようなものはありますか?またはという単一のバイトのため、Javaに戻す必要がありますか?彼のコメントでジョーKの考えに基づきscala.io.Sourceを使用してバイトオーダーマークを削除するには?

+2

でしたあなたは 'Source.fromInputStream'を使って、リンクされた質問から答えの一つをラップします。 –

答えて

0

、およびJavaで問題とAlvin Alexander's Scala codeためAndrei Punko's answerを使用して、おそらく文字列の配列にバイト順マークを含むファイルを読み込むための最も簡単な解決策は以下のとおりです。

@throws[IOException] 
def skip(reader: Reader): Unit = { 
    reader.mark(1) 
    val possibleBOM = new Array[Char](1) 
    reader.read(possibleBOM) 
    if (possibleBOM(0) != '\ufeff') reader.reset 
} 

val br = new BufferedReader(new InputStreamReader(new FileInputStream(file))) 
skip(br) 

val lines = { 
    val ls = new ArrayBuffer[String]() 
    var l: String = null 
    while ({l= br.readLine; l != null}) { 
     ls.append(l) 
    } 
    br.close 
    ls.toArray 
} 
関連する問題