鲁春利的工作笔记,好记性不如烂笔头
http://www.scala-lang.org/api/current/#scala.io.package
scala.io.Source封装了对文件的操作,而scala.io.StdIn用来接收控制台的数据。
1、scala.io.Source
fromFile(file: File) fromURI(uri: URI) fromURL(url: URL)
2、scala.io.StdIn
readLine/readInt/readFloat/readBoolean等
1、读取文件
import scala.io.Source; if (args.length > 0) { for (line <- Source.fromFile(args(0)).getLines()) { println(line.length + "\t" + line); } } else { Console.err.println("Please enter filename."); }
test.txt文件内容
One World
One Dream
调用
G:\Hadoop\scala-SDK\source>scala printargs.scala test.txt 9 One World 9 One Dream G:\Hadoop\scala-SDK\source>scala printargs.scala Please enter filename.
Scala引入包的方式和Java类似,也是通过import语句。文件相关的类定义在scala.io包中。 如果需要引入多个类,Scala使用 “_” 而非 “*”。
package com.gourd.file; import scala.io.Source; import java.net.ConnectException; import java.io.File; import java.io.PrintWriter; import java.io.BufferedReader; import java.io.InputStreamReader; /** * 文件操作的辅助类 */ class FileUtil { def readFromFile (path : String) = { val source = Source.fromFile(path); val file = source.getLines(); // 返回值为Iterator[String] file.foreach { line => println(line); } source.close(); } def readFromUrl (url : String) = { try { val source = Source.fromURL(url); val file = source.getLines(); // 返回值为Iterator[String] file.foreach { line => println(line); } source.close(); } catch { case ex : ConnectException => println("Url " + url + " is invalid."); } } def writeToFileWithJava () = { val pw = new PrintWriter(new File("E:\\测试数据\\" + System.currentTimeMillis() + ".txt")); for (i <- 1 to 10) pw.println(i); pw.flush(); pw.close(); } /** * Java风格的从控制台读取数据并打印 */ def writeToFileFromReadWithJava () = { print("Please Enter:"); val br = new BufferedReader(new InputStreamReader(System.in)); /** * * 按照下属方式是可以正常读取并结束的,但是如果是我们平时熟悉的java方式的话: * while ((line = br.readLine()) != "bye") {......}则是有问题,IDE提示: * comparing values of types Unit and String using `!=' will always yield true */ var line = br.readLine(); while(line != "exit") { println("Receive from console : " + line); print("Please Enter:"); line = br.readLine(); } println("Exit.") br.close(); } /** * Scala风格的从控制台读取数据并打印 * scala.Console */ def writeToFileFromReadWithScala () = { print("Please Enter:"); var line = Console.readLine(); while(line != "exit") { println("Receive from console : " + line); print("Please Enter:"); line = Console.readLine(); } println("Exit.") } } /** * @author lucl */ object FileUtilOps { def main (args : Array[String]) { // 从文件中读数据 val fileUtil = new FileUtil; fileUtil.readFromFile("E:\\测试数据\\test.txt"); // 从URL中读数据 // fileUtil.readFromUrl("http://www.text.com"); // fileUtil.readFromUrl("https://www.baidu.com"); // 写数据到文本文件 fileUtil.writeToFileWithJava(); fileUtil.writeToFileFromReadWithJava(); fileUtil.writeToFileFromReadWithScala(); } }
转载于:https://blog.51cto.com/luchunli/1704335