Editar: Comme l'ont fait remarquer certains commentaires sur le SO et la ailleurs Si l'on se fie à ce qui précède, cette solution n'est peut-être plus la meilleure (et je ne sais pas si elle l'a jamais été). Je vous invite à consulter les autres réponses ici, à faire vos propres tests et à mettre en avant ces autres réponses si elles fonctionnent. Malheureusement, bien sûr, je ne peux pas désactiver cette réponse moi-même.
scala.io.Source.fromFile(fileName).map(_.toByte).toArray
(ou toArray
avant map
?)
Notez que cela peut laisser le fichier ouvert, vous devrez donc probablement le faire :
val source = scala.io.Source.fromFile(fileName)
val byteArray = source.map(_.toByte).toArray
source.close()
Modifier : Si vous avez besoin de charger un encodage spécifique, vous pouvez utiliser le fait que Source.fromFile
accepte un scala.io.Codec
comme un paramètre implicite ( voir API ) :
def fromFile(name: String)(implicit codec: Codec): BufferedSource
ou, vous pouvez utiliser une chaîne de caractères comme deuxième paramètre, en spécifiant un java.nio.charset.Charset :
def fromFile(name: String, enc: String): BufferedSource
Ainsi, pour des données binaires de 8 bits, il peut être approprié d'utiliser quelque chose comme :
scala.io.Source.fromFile(fileName)(scala.io.Codec.ISO8859)
// or
scala.io.Source.fromFile(fileName, "ISO-8859-1")
et pour les données UTF-8, ce serait
scala.io.Source.fromFile(fileName)(scala.io.Codec.UTF8)
// or
scala.io.Source.fromFile(fileName, "UTF-8")
3 votes
Je pense que s'appuyer sur les bibliothèques Java est ce que (presque ?) tout le monde ferait, y compris la bibliothèque Scala. Voir par exemple le code source de scala.io.Source.
0 votes
Je sais que Scala s'appuie sur Java. Mais quel est l'intérêt d'un langage où je ne peux même pas faire de simples entrées/sorties de fichier sans utiliser une autre langue ?
2 votes
Vous n'utilisez pas un langage différent, mais simplement une API standard de la JVM qui s'est avérée suffisamment bonne pour ne pas être remplacée !
1 votes
Hm ouais, tu as probablement raison... Pourtant, j'ai l'impression de tricher. :)
4 votes
Comment pensez-vous que les classes Java sont implémentées ? Au fond, quelque part, il y a une méthode native : elle n'a qu'une signature, pas d'implémentation Java, et s'appuie sur une implémentation C spécifique au système d'exploitation. N'est-ce pas aussi de la triche ? :)
2 votes
Il faut dire que Scala sur .Net rend cette question plus pressante.
0 votes
@Duncan McGregor : Bon point, je suppose que la transition n'est pas aussi douce là-bas...
4 votes
@Philippe : Bien sûr, et utiliser le C, c'est seulement tricher sur l'assemblage :P... Ce que je voulais dire, c'est que la frontière entre les langages est généralement assez clairement définie, Scala et Java se fondent l'un dans l'autre.
0 votes
Duplicata possible de Quelle est la bonne façon de coder une boucle read-while en Scala ?