文件和正则表达式

前端之家收集整理的这篇文章主要介绍了文件和正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.读取行

要读取文件中的所有行,可以调用scala.io.Source对象的getLines方法

@H_502_8@importscala.io.Source //第一个参数可以是java.io.File,或者String。 valsource=Source.fromFile("D:/V-learning/Java/Scala/developingFiles/readFiles.txt","UTF-8") //返回一个迭代器 valiter=source.getLines() for(v<-iter)println(v) //用完source对象后,需要关闭。 source.close()

getLines()返回结果是一个迭代器,可以逐行处理这些行,或者可以使用迭代器的toArray,或者toBuffer方法,将其转换为数组或数组缓冲。另外,source对象使用后需要关闭


下面例子,也可以直接使用mkString方法,直接将整个文件转化为一个字符串:

@H_502_8@valiterable=Source.fromFile("D:/V-learning/Java/Scala/developingFiles/readFiles.txt").getLines() println(iterable.mkString("||"))


2.读取字符

首先,通过API查看Source对象的定义:

@H_502_8@abstractclassSourceextendsIterator[Char]withCloseable

source是一个抽象类,继承Iterator[Char]类。可以直接把Source当做迭代器。

如果想查看某个字符,但是不想处理掉它的话,可以使用使用source对象的buffered方法,然后使用head方法查看下一个字符。

@H_502_8@//统计文件中有多少个t字符 valsource1=Source.fromFile("D:/V-learning/Java/Scala/developingFiles/readFiles.txt","UTF-8") valbuffered_charater_source1=source1.buffered varcharacter_count=0 while(buffered_charater_source1.hasNext) { if(buffered_charater_source1.head=='t'){character_count+=1} buffered_charater_source1.next() } println("t字符的个数是:"+character_count) source1.close()


3.读取词法单元和数字:

这部分读取文件中以空格隔开的单词。如果需要将String转化为数值,可以使用toInt,或toDouble方法。下面程序也演示了如何从控制台读取输入。

@H_502_8@/* *文件中存储以一个(或多个)空格分隔的数字(整数、Double)。读取这些数字,从命令行输入一个因子, *然后将这些数字乘以这个因子,将这些数字逗号分隔输出,并计算总和。 */ valsource2=Source.fromFile("D:/test/develop/nums.txt","UTF-8") valnums_source=source2.getLines().mkString.split("\\s+") println("请输入乘数因子:") importscala.io.StdIn valvetor=StdIn.readInt() valnums_output=nums_source.map{_.toDouble*vetor} //valnums_output=for(w<-nums_source)yield{(w.toDouble)*vetor} println("乘以乘数因子后的数组:"+nums_output.mkString(",")) source2.close()

scala中的String.split复用了Java中的String.split方法,详细说明可以参考下面的文章

http://www.cnblogs.com/davidhaslanda/p/4050471.html


4.读取其他格式(数据源)文件

除了从文本文件读取内容,还可以从“网址”、“字符串”、“标准输入”和“二进制文件”等渠道读取文件内容

首先,需要介绍普通文本文件和二进制文件的区别:



Scala没有提供读取二进制文件方法,需要使用Java类。

猜你在找的正则表达式相关文章