Gemischtes

Textdatei auslesen
Datenbankzugriff über JDBC
Textdatei in einem Frame ausgeben
Using (auto close)

Textdatei auslesen

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(_)
    }
  }
}
Getestet: Scala 2.8.0; timpt.de - X2H V 0.18


↑↑↑ Seitenanfang ↑↑↑

Datenbankzugriff über JDBC

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"))
  }
}
Getestet: Scala 2.8.1; timpt.de - X2H V 0.18

Siehe: http://blogs.enterprisedb.com/2010/07/08/scala-postgresql-access/ Flagge Großbritanien
↑↑↑ Seitenanfang ↑↑↑

Textdatei in einem Frame ausgeben

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
}
timpt.de - X2H V 0.18


↑↑↑ Seitenanfang ↑↑↑

Using (auto close)

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.

Getestet: Scala 2.9.3 (Eclipse Juno) - JRE6 (12.9.2012)
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
    }    
  }
}
timpt.de - X2H V 0.20

Siehe: Scala Hamburg - SCALA CODING - AUTOCLOSE
↑↑↑ Seitenanfang ↑↑↑