您的位置:首页 > 其它

Scala2.11.7学习笔记(九)文件操作  

2015-10-19 22:34 323 查看
鲁春利的工作笔记,[b]好记性不如烂笔头[/b]

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();
}
}


本文出自 “闷葫芦的世界” 博客,请务必保留此出处http://luchunli.blog.51cto.com/2368057/1704335
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: