scala的IO操作

1.scala主要用java的中的I/O類(java.io.File)

public static final String pathSeparator 常量 表示路徑的分隔符(windows:‘;’)

public static final String separator 常量 表示路徑分隔符(windows:‘\’)

public File(String pathname) 構造 創建File類對象,傳入完整的路徑

public boolean createNewFile() throws IOException 普通 創建新文件

public boolean exists() 普通 判斷文件是否存在

public boolean delete() 普通 刪除文件

public boolean isDirectory() 普通 判斷給定的路徑是否是一個目錄

public long length() 普通 返回文件的大小

public String[] list() 普通 列出指定目錄的全部內容,只是名稱

public File[] listFiles() 普通 列出指定目錄的全部內容,會列出路徑。

public boolean mkdir() 普通 創建一個目錄

public boolean renameTo(File dest) 普通 爲已有的文件重命名

 

2.小例:

import java.io.File
import scala.io.Source
import java.io.PrintWriter


val filePath = new File("C:\\Users\\peanut\\Desktop\\apple.txt")

val source=Source.fromFile(filePath)
val source2=Source.fromFile(filePath,"UTF-8")
val source3 = Source.fromURL("www.baidu.com","UTF-8")
val source4 = Source.fromString("i like strawberry")


//讀取文件中所有行,返回一個迭代器
val lineIterator = source.getLines()
lineIterator.foreach(println)

//讀取文件中所有行,toArray返回一個數組
val lineArray = source.getLines().toArray
for(ele <- lineArray){
println("line: "+ele)
}

//讀取文件中所有行,mkstring返回一個字符串
val lineString = source.getLines().mkString //文件不能過大


//將文件內容以空格分割,返回一個數組
val arrayTokens = source.mkString.split("\\s+")

source.close() //關閉流


//寫文件

val out =new PrintWriter("C:\\Users\\peanut\\Desktop\\appleWrite.txt")
for (i <- 1 to 10){
//out.println("hello")
out.write("Apple")
}
out.close()//關閉打印流

 

3.小例2:

val path = new File("C:\\Users\\peanut\\Desktop\\myFile")

for(file <- getFile(path)){
val filePath=file.getAbsolutePath //獲取絕對路徑

System.out.println("getAbsolutePath: " + filePath)
val fileName=file.getName //獲取文件名
System.out.println("fileName: " + fileName)
}


val path2 = new File("C:\\Users\\peanut\\Desktop\\apple.txt")

try {
path2.createNewFile()
println("create file success ")
} catch {
case e:Exception => println("can't create "+path2)
}

if(path2.exists()){
path2.delete()
println("delete file success!")
}



/**
* 遍歷出指定目錄下的全部文件
* @param file 指定目錄
* @return Array[File]
*/
def getFile(file: File): Array[File] = {

    val files = file.listFiles().filter(!_.isDirectory) //過濾掉目錄
    //.filter(t => t.toString.endsWith(".txt") || t.toString.endsWith(".json") ) //過濾保留特定後綴名的文件

    //遞歸遍歷子目錄
    val files2=file.listFiles().filter(_.isDirectory).flatMap(getFile)
    files ++ files2
}


/**
* 遍歷出指定目錄下的所有目錄
* @param file 指定目錄
* @return Array[File]
*/
def getDir(file: File): Array[File] = {

    val dirs = file.listFiles().filter(_.isDirectory) //只保留目錄

    //遞歸遍歷子目錄
    val dirs2=files.flatMap(getDir)
    dirs++ dirs2
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章