Das nachfolgende Beispiel zeigt, wie eine Textdatei Zeilenweise eingelesen werden kann.
object TextFileLines {
def main(args: Array[String]) {
scala.io.Source.fromFile("c:\\boot.ini").getLines().foreach {
println(_)
}
}
}
object ScalaJDBC {
def main(args: Array[String]) {
import java.sql._
classOf[org.postgresql.Driver]
val connection = DriverManager.getConnection("jdbc:postgresql://localhost/database","user","password")
val statement = connection.createStatement
val sql = "SELECT * FROM table WHERE id > 0"
val resultSet = statement.executeQuery(sql)
while (resultSet.next) println(resultSet.getInt("id")+" "+resultSet.getString("name"))
}
}
Das nachfolgende Beispiel zeigt, wie man den Inhalt einer Textdatei in einem Frame ausgeben kann. Wird vom Hauptfenster aus der Button1 gewählt, wird der Inhalt der Datei in einer TextArea ausgegeben. Wählt man den Button 2 dann wird der Inhalt in einem Label ausgegeben.
import swing._
import scala.swing._
import scala.swing.event._
object MyFrame{
def main(args : Array[String]) {
val myFrame = new MyFrame()
myFrame.visible = true
myFrame.listenTo(myFrame.button1,myFrame.button2,myFrame)
myFrame.reactions += {
case ButtonClicked(myFrame.button1) => new TextAreaFrame("c:\\ablage\\Test.txt")
case ButtonClicked(myFrame.button2) => new LabelFrame("c:\\ablage\\Test.txt")
case WindowClosing(w) => exit(0)
}
}
}
class MyFrame extends Frame{
title = "MyFrame"
val button1 = new Button("Button 1")
val button2 = new Button("Button 2")
val panel = new FlowPanel
panel.contents += button1
panel.contents += button2
contents = panel
}
class TextAreaFrame(fileName: String) extends Frame{
val textArea = new TextArea(25,80)
for (s: String <- scala.io.Source.fromFile(fileName).getLines()) textArea append (s + "\n")
contents = textArea
visible = true
}
class LabelFrame(fileName: String) extends Frame{
val builder = new StringBuilder
for (s: String <- scala.io.Source.fromFile(fileName).getLines()) builder append (s + "<br>")
contents = new Label("<html>"+builder.toString()+"</html>")
visible = true
}
Das nachfolgende Beispiel zeigt, wie wir mit Ressourcen umgehen können, die geschlossen werden müssen (sollten),
ohne immer wieder eine try - finally Struktur ausprogrammieren zu müssen.
import java.io.FileReader
import java.io.File
class SomeClass {
def using[T <: { def close() }](resource: T)(block: T => Unit) {
try {
block(resource)
} finally {
if (resource != null) resource.close()
}
}
def doWithFileReader(file: File): Unit = {
using (new FileReader(file)){ fileReader =>
// Arbeit mit fileReader
}
}
}