SORU
16 AĞUSTOS 2009, Pazar


Tüm Scala dosyasını okudun mu?

Scala belleğe tüm dosyayı okumak için basit ve kurallı bir yolu nedir? (İdeal olarak, karakter kodlamasını kontrol ile.)

Aklıma gelen en iyisidir:

scala.io.Source.fromPath("file.txt").getLines.reduceLeft(_ _)

ya da en iyisi gibi görünüyor Java's god-awful idioms: birini kullanmak gerekiyor

import java.util.Scanner
import java.io.File
new Scanner(new File("file.txt")).useDelimiter("\\Z").next()

E-posta listesi tartışmaları okuyunca, bana scala için net değil.ıo.Hatta Kaynak G/Ç kitaplığı kurallı olması gerekiyordu. Kullanım amacına uygun olarak, tam olarak ne olduğunu anlamıyorum.

... Ölü bir şey-basit istiyorum ve hatırlamak kolay. Bu dilde örneğin, çok zor dilini unutmak

Ruby    open("file.txt").read
Ruby    File.read("file.txt")
Python  open("file.txt").read()

CEVAP
16 AĞUSTOS 2009, Pazar


val lines = scala.io.Source.fromFile("file.txt").mkString

Bu arada, "scala." değil, gerçekten gerekli olarak her zaman kapsam her neyse, ve, tabii ki, ithal ıo içeriği, tamamen veya kısmen, ve önlemek olmasının önüne "ıo." de.

Yukarıdaki dosyayı açmak, ancak bırakır. Sorunları önlemek için, bu gibi kapatmak gerekir:

val source = scala.io.Source.fromFile("file.txt")
val lines = try source.mkString finally source.close()

Bu kod ile başka bir sorun, yukarıdaki uygulama doğası gereği korkunç yavaş olmasıdır. Daha büyük dosyalar için kullanmanız gerekir:

source.getLines mkString "\n"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EatingIn

    EatingIn

    12 EKİM 2013
  • Matthew Smith

    Matthew Smit

    24 Mayıs 2010
  • whatever

    whatever

    30 EYLÜL 2005