关于Scala文件操作中出现的问题

  在各种项目中,我们常常需要用到文件操作,笔者在近期的项目中遇到了一个与文件操作相关的问题。

  在代码实现的过程中,笔者首先定义了一个文件路径:def PATH = "/a/b/c.txt"

  之后开始使用文件操作:val source1 = Source.fromFile(PATH)

  在for循环中,逐行读取文件、处理文件:for(line1 <- source1.getLines()) { // 逐行处理逻辑  }

  在这一轮对文件的各行处理之后,笔者希望再次对处理后的结果进行下一轮处理,所以再次使用了for循环:for(line1 <- source1.getLines())

  但是,结果显示,第二轮操作并没有真正实现。

  经过研究发现,在利用source对象读取完一遍文件后,它便指向了文件的尾部,再次调用for循环时,实际上没有进行任何操作,因为没有读入任何数据。

  解决方法是,重新实例化一个source2:val source2 = Source.fromFile(PATH)

  再次调用for循环:for(line2 <- source2.getLines())

  这样就可以实现再次对文件进行操作了。

时间: 2024-08-23 08:44:46

关于Scala文件操作中出现的问题的相关文章

scala文件读写,序列化

import java.io._ import java.nio.file._ import scala.io.Source object HelloWorld extends App {   println("打印所有的子目录")   implicit def makeFileVisitor(f: (Path) => Unit) = new SimpleFileVisitor[Path] {     override def visitFile(p: Path, attrs: 

Scala文件操作

Scala中的文件操作基本可以依赖于Java的实现,包括输入.输出流的使用. object FileOps {def main(args: Array[String]) { val file = Source.fromFile("E:\\WangJialin.txt")  for (line <- file.getLines){ println(line)} file.close val webFile = Source.fromURL("http://spark.ap

文件操作中的几个大坑

在程序开发中你经常会碰到很多关于路径的问题的.比如读取文件,写文件等,你必要传一个文件的路径.然而你也许常常碰到这样的问题:逻辑是对的,但就出不来你想要的结果.这是为什么呢?因为对于文件操作的路径问题,有很多你稍不慎就会掉入的大坑. 说几个掉进大坑的惨痛经历 编译一个C++的工程,工程中要用到cmake工具,而cmake安装在C:\Program Files (x86)\cmake2.8(程序默认安装时,安装到这个目录是很正常不是吗).然而问题来了,工程怎么编不过,报一个很诡异的异常: Micr

php 文件操作中几种方法整理

1.获取文件夹下所有文件个数 echo ShuLiang("../0503lianxi"); function ShuLiang($filename) { if(is_dir($filename))//判断是不是文件夹 { $attr=glob($filename."/*");//是文件夹则遍历目录 $sl=0; foreach($attr as $v) { if(is_dir($v)) { $sl=$sl+ShuLiang($v); } else { $sl++;

scala文件读取报错“java.nio.charset.MalformedInputException: Input length = 1”

今天写spark程序的时候遇到了一个问题就是,读取文件的时候报了一个错:"Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1" 读取文件的代码如下: 一看这个这个错"nio"错误,第一感觉就是读文件方法这里出了问题,于是点击去看了一下Source.fromFile这个方法的源码: 果然,这个方法的重载有好几个,但是每一都直接或间

python3_文件操作中file.seek()方法

1.seek函数 file.seek(off, whence=0):从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动. 如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置. file.seek(0)是重新定位在文件的第0位及开始位置file = open("test.txt","rw") #注意这行的变动file.seek(3) #定位到第3个 2.示例 from sys i

python关于文件操作中的字符个数和字节数

记得刚开始学习python文件操作写文件的时候有个问题,很奇怪.最后知道了就是字节数的原因. 我们先来看个例子. 新建个文件存为utf-8命名为0117utf-8.txt记得去掉BOM头. 我们用r+模式尝试去修改 >>> fp=open("d:\\pydelete\\0117utf-8.txt","r+")>>> fp.write("aa")2>>> fp.close()>>&g

LINUX系统下Java和Scala的环境配置

LINUX系统下Java和Scala的环境配置 最近,笔者在研究一个有关“自然语言处理”的项目,在这个项目中,需要我们用Spark进行编程.而Spark内核是由Scala语言开发的,所以在使用Spark之前,我们必须配置好Scala,而Scala又是运行在JVM上的,所以在配置Scala之前,先要配置好JDK.下面是我个人的一些总结. 我是在Win7系统下开的虚拟机,虚拟机的系统是CentOS7,在创建虚拟机完成后,它会自带一个OpenJDK,我的版本是这样的: 但是因为最开始不了解这个情况,所

小何讲Linux: 基本文件操作和实例

文件操作的基本概念参见博客: 小何讲Linux: 底层文件I/O操作 1.  函数说明 open()函数:是用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数. 所谓打开文件实质上是在进程与文件之间建立起一种连接,而"文件描述符"唯一地标识着这样一个连接 close()函数:是用于关闭一个被打开的文件.当一个进程终止时,所有被它打开的文件都由内核自动关闭,很多程序都使用这一功能而不显示地关闭一个文件. read()函数:是用于将从指定的文件描述符中读出的数据