0018.scala文件的读取写入操作代码

这篇博客展示了如何使用Scala进行文件读取和写入操作。通过`Source.fromFile`方法读取本地文件,并遍历打印每行内容;通过`PrintWriter`写入数据到指定文件;同时,还提及了从URL读取文件的内容。
摘要由CSDN通过智能技术生成
1. 本地文件读取
package com.jn.scala

import scala.io.Source

/**
* Created by admin on 2015/11/21.
*/
object FileOps {
 
def main(args: Array[ String ]) {
   
val file = Source.fromFile ( "D: \\ jiangning.txt" ) //读取文件
   
for (line <- file.getLines()){ //对文件中的每一行进行遍历
     
println(line)
    }
    file.close()
  }
}
//运行结果
good
spark
scala

2.源码分析
object Source extends scala.AnyRef {
 
val DefaultBufSize : scala.Int = { /* compiled code */ }
 
def stdin : scala.io.BufferedSource = { /* compiled code */ }
 
def fromIterable(iterable : scala. Iterable [scala.Char]) : scala.io.Source = { /* compiled code */ }
 
def fromChar(c : scala.Char) : scala.io.Source = { /* compiled code */ }
 
def fromChars(chars : scala.Array[scala.Char]) : scala.io.Source = { /* compiled code */ }
 
def fromString(s : scala.Predef. String ) : scala.io.Source = { /* compiled code */ }
 
def fromFile(name : scala.Predef.String )(implicit codec : scala.io.Codec) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromFile(name : scala.Predef. String , enc : scala.Predef. String ) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromFile(uri : java.net.URI)( implicit codec : scala.io.Codec) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromFile(uri : java.net.URI, enc : scala.Predef. String ) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromFile(file : java.io.File)( implicit codec : scala.io.Codec) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromFile(file : java.io.File, enc : scala.Predef. String ) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromFile(file : java.io.File, enc : scala.Predef. String , bufferSize : scala.Int) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromFile(file : java.io.File, bufferSize : scala.Int)( implicit codec : scala.io.Codec) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromBytes(bytes : scala.Array[scala.Byte])( implicit codec : scala.io.Codec) : scala.io.Source = { /* compiled code */ }
 
def fromBytes(bytes : scala.Array[scala.Byte], enc : scala.Predef. String ) : scala.io.Source = { /* compiled code */ }
 
def fromRawBytes(bytes : scala.Array[scala.Byte]) : scala.io.Source = { /* compiled code */ }
 
def fromURI(uri : java.net.URI)( implicit codec : scala.io.Codec) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromURL(s : scala.Predef. String , enc : scala.Predef. String ) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromURL(s : scala.Predef. String )( implicit codec : scala.io.Codec) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromURL(url : java.net.URL, enc : scala.Predef. String ) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromURL(url : java.net.URL)( implicit codec : scala.io.Codec) : scala.io.BufferedSource = { /* compiled code */ }
 
def createBufferedSource(inputStream : java.io.InputStream, bufferSize : scala.Int = { /* compiled code */ }, reset : scala.Function0[scala.io.Source] = { /* compiled code */ }, close : scala.Function0[scala.Unit] = { /* compiled code */ })( implicit codec : scala.io.Codec) : scala.io.BufferedSource = { /* compiled code */ }
 
def fromInputStream(is : java.io.InputStream, enc : scala.Predef. String ) : scala.io.BufferedSource = { /* compiled code */ }
  def fromInputStream(is : java.io.InputStream)(implicit codec : scala.io.Codec) : scala.io.BufferedSource = { /* compiled code */ }
}

3.这里看到没有进行源码关联,下载源码,选择自己的版本
解压后,压缩成zip包
4.源码
(1)/** creates Source from file with given name, setting its description to
*  filename.
*/
def fromFile(name: String )( implicit codec: Codec): BufferedSource =
  fromFile(new JFile(name))(codec)

返回值 BufferedSource

(2)/** This object provides convenience methods to create an iterable
*  representation of a source file.
*
@author  Burak Emir, Paul Phillips
*/
class BufferedSource(inputStream: InputStream, bufferSize: Int)( implicit val codec: Codec) extends Source {
 
def this (inputStream: InputStream)( implicit codec: Codec) = this (inputStream, DefaultBufSize )(codec)
 
def reader() = new InputStreamReader(inputStream, codec.decoder)
  def bufferedReader() = new BufferedReader(reader(), bufferSize)

5.读取URL
package com.jn.scala

import scala.io.Source

/**
* Created by admin on 2015/11/21.
*/
object FileOps {
 
def main(args: Array[ String ]) {
//    val file = Source.fromFile("D:\\jiangning.txt")//读取文件
//    for(line <- file.getLines()){//对文件中的每一行进行遍历
//      println(line)
//    }
//    file.close()
   
val file = Source.fromURL( "http://spark.apache.org" ) //读取文件
   
for (line <- file.getLines()){ //对文件中的每一行进行遍历
     
println(line)
    }
    file.close()
  }
}

6.写文件
package com.jn.scala

import java.io.{File, PrintWriter}

import scala.io.Source

/**
* Created by admin on 2015/11/21.
*/
object FileOps {
 
def main(args: Array[ String ]) {
//    val file = Source.fromFile("D:\\jiangning.txt")//读取文件
//    for(line <- file.getLines()){//对文件中的每一行进行遍历
//      println(line)
//    }
//    file.close()
//    val file = Source.fromURL("http://spark.apache.org")//读取文件
//    for(line <- file.getLines()){//对文件中的每一行进行遍历
//      println(line)
//    }
//    file.close()

   
val writer = new PrintWriter( new File( "scalaFile.txt" ))
   
for (i <- 1 to 100 )writer.println(i)
    writer.close()
  }
}

利用java的写文件进行写入

7.控制台输入
package com.jn.scala

import java.io.{File, PrintWriter}

import scala.io.Source

/**
* Created by admin on 2015/11/21.
*/
object FileOps {
 
def main(args: Array[ String ]) {
//    val file = Source.fromFile("D:\\jiangning.txt")//读取文件
//    for(line <- file.getLines()){//对文件中的每一行进行遍历
//      println(line)
//    }
//    file.close()
//    val file = Source.fromURL("http://spark.apache.org")//读取文件
//    for(line <- file.getLines()){//对文件中的每一行进行遍历
//      println(line)
//    }
//    file.close()

//    val writer = new PrintWriter(new File("scalaFile.txt"))
//    for(i <- 1 to 100)writer.println(i)
//    writer.close()

   
print( "Please enter your input : " )
   
val line = Console.readLine
    println(
"Thanks ,for your help " + line)
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值