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

  • Chip Johnson

    Chip Johnson

    30 AĞUSTOS 2007
  • DavideoDesign

    DavideoDesig

    24 NİSAN 2006
  • paikimchung

    paikimchung

    12 Mayıs 2006