scala读取文件与java的对比

9 篇文章 0 订阅

一、写一个简单的java读写方法

操作文件准备

创建test.txt文本文件
文件内容如下:

001 zhangsan male
002 lisi female

java代码操作读写过程
注:每一步解释在代码中注释

import java.io.*;

public class IO {
    public static void main(String[] args) throws IOException {
        //创建文件对象
        File f=new File("D:\\project\\myscala\\src\\test.txt");
        //随便造的字符串数据
        String str="\n003 lyq male";
        //调用写的方法
        write(f,str,true);
        //调用读的方法
        read(f);
    }

    //写入方法
    public static void write(File f,String str,Boolean append) throws IOException {
        //创建写操作对象
        FileWriter fw=new FileWriter(f,append);
        //调用写入方法,括号中为写入内容
        fw.write(str);
        //关闭资源
        fw.close();
    }

    public static void read(File f) throws IOException {
        //创建读操作对象
        FileReader fr=new FileReader(f);
        //创建StringBuffer可变字符串
        StringBuffer sb=new StringBuffer();
        //创建临时整形数,用于数据类型转换
        int tmp;
        //循环读数据,并把读出的数据放入可变字符串中。
        while((tmp=fr.read())!=-1){
            sb.append((char) tmp);
        }
        //输出可变字符串
        System.out.println(sb);
        //关闭资源
        fr.close();
    }
}

二、scala集成java操作文件读写

使用scala操作java API对文件进行读写操作。

数据准备:
数据文件名:log.log
数据内容:

INFO 2016-07-25 requestURI:/c?app=0&p=1&did=18005472&industry=469&adid=31
INFO 2016-07-25 requestURI:/c?app=0&p=2&did=18005472&industry=469&adid=31
INFO 2016-07-25 requestURI:/c?app=0&p=1&did=18005472&industry=469&adid=32

scala代码演示

object IODemo extends App {
  //输入输出流 IO
  //java里面有 字符 字节输入输出
  val filePath:String="src/log.log"

  //使用java.io读取文件
  val reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath),"GBK"))
  println(reader.readLine())
}

三、用scala提取日志信息

注:具体思路见代码中注释。

object IODemo extends App {
//scala.io 下独有的读取文件方式 source
  val file: BufferedSource = Source.fromFile(filePath)
//  file.getLines().foreach(println)
//  "INFO 2016-07-25 requestURI:/c?app=0&p=1&did=18005472&industry=469&adid=31"
  //"ERROR"
//  val regex: Regex = """([a-zA-Z]+) (\d\d\d\d-\d\d-\d\d) [^:]*:(.*)""".r
  val regex: Regex = """(\w+) (\d{4}-\d{2}-\d{2}) [^:]*:(.*)""".r
  //匹配获取相关内容,使用正则表达式,使用模式匹配
  for(s <- file.getLines()){
    s match {
      case regex(level,date,uri)=>println(s"日志级别:${level},日期:${date},uri:${uri}")
      case _ => println("匹配不到")
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值