La méthode getLines() des bandes scala.io.Source et des lignes qu'elle renvoie. Je préfère garder ces caractères dans les chaînes renvoyées.Lire les lignes d'un fichier dans Scala 2.7, en conservant les terminaisons de ligne
commentaire de getLines dit:
si vous avez besoin un comportement plus raffiné, vous pouvez sous-classe Source # LineIterator lignesretours (non compris le caractère de nouvelle ligne (s)) [...]
I J'ai essayé de sous-classer LineIterator, mais j'ai des problèmes (et peut-être un simple malentendu!).
Je veux quelque chose comme:
class FullLineIterator() extends LineIterator {
// Don't strip \r?\n
override def getc() = iter.hasNext && {
val ch = iter.next
if (ch == '\n') {
sb append ch
false
} else if (ch == '\r') {
sb append ch
if (iter.hasNext && iter.head == '\n') {
iter.next
sb append iter.head
}
false
} else {
sb append ch
true
}
}
}
Mais je frappé deux problèmes majeurs:
1) Type LineIterator ne se trouve pas, même si je importation scala.io.Source._
2) Je suis à peu près sûr que je ne peux pas accéder à sb, car c'est privé [this] dans LineIterator.
Est-ce que quelqu'un a déjà voulu faire ça? C'est une chose assez étrange à vouloir faire, mais je veux le faire :).
J'ai jeté un coup d'œil à scalax et ai fait des recherches sur google pendant un moment, sans chance.
Toutes les suggestions seront les bienvenues. Merci.
Oui, je pense que je vais devoir prendre l'approche que vous proposez. Merci. – owst