2015.7.9
DT大数据梦工厂scala 深入浅出实战经典 再也没有这样好的视频了,只要每天看一点,你就会有一点收获,讲的并不只是代码,而且还有一些看待事物的哲理,通过真实场景来思考代码,这是这个视频的精华所在,要想学好大数据,并没有什么可犹豫的,直接看就可以了,你的成功不在于你努力了多少,而是你做了成功的事。shihttp://pan.baidu.com/s/1kTotMQz
今天先讲一下File这个传输的过程吧,自己敲了一下代码试试,这是我通过看视频,散发出的一些正能量,绝对刚出炉,还热乎的呢。
首先,上代码:
package com.dt.scala.basic
import scala.io.Source
import java.io.File
import java.io.PrintWriter
import java.io.FileWriter
import java.io.BufferedWriter
import java.util.Scanner
object FileOps {
def main(args: Array[String]): Unit = {
// val file=Source.fromFile("E:\\hehe.txt","utf8")
// for(line <- file.getLines){println(line)}
// file.close();
// val webFile = Source.fromURL("http://spark.apache.org/")
// webFile.foreach(print)
// webFile.close
// val webFile=Source.fromURL("http://spark.apache.org/")
// for(line<-webFile.getLines()){println(line)}
// println("**********************************************************")
// webFile.foreach { print }
// webFile.close()
// val writer = new PrintWriter(new File("scalaFile.txt" ))
// for (i <- 1 to 100) writer.println(i)
// writer.close()
// val writer=new PrintWriter(new File("scalaFile.txt"))
// for(i<-1 to 50) writer.println(i)
// writer.close()
// val filll=new File("scalaFile.txt")
// if(!filll.exists()){
// filll.createNewFile();
// }
// val hehe=new FileWriter(filll.getAbsoluteFile,true)
// val buffer=new BufferedWriter(hehe)
// for(i<-1 to 50){
// buffer.write(""+i)
// }
// buffer.close()
// print("Please enter your input : " )
// val line = readLine
// println("Thanks, you just typed: " + line)
print("Please enter your input : ")
val line=readLine()
println("Thanks,you just typed: " +line)
val scan = new Scanner(System.in);
println(scan.next())
}
}
首先就是file的获取和输出file的内容,
1)如果文件是用utf8格式的方式输入的,那个Source.fromFile就应该加一个参数,就是“utf8”,如果不加默认是按照项目的编码格式来判断的,项目用的是utf8,文件用的是gbk,如果不加第二个参数,就会出现乱码,
2)for循环中,如果用不到循环第几次数,则最好用foreach()这样中间变量都省了。最好不要用for(line<-file.getLines).但是如果需要用到循环次数,比如写入1到50到一个文件,应该用for(i<-1 to 50).
3)但是用PrintWriter不能追加文件,要是想在一个文件文字的末尾追加一段文字,就得用FileWriter,这个的第二个参数是true,就可以追加。
4)因为scala的readLine是过期的方法,被画横线了,所以推荐大家还是用Scanner吧