加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy的文件操作

发布时间:2020-12-14 16:54:39 所属栏目:大数据 来源:网络整理
导读:groovy 文件操作,对java原有的io进行了扩展,增加了许多闭包后省去了很多逻辑无关代码,同时自动进行资源管理和异常处理。? 读取文件内容:? 使用java代码的基本写法 FileInputStream fin = null; try { fin = new FileInputStream("test.txt"); BufferedRe

groovy 文件操作,对java原有的io进行了扩展,增加了许多闭包后省去了很多逻辑无关代码,同时自动进行资源管理和异常处理。?

读取文件内容:?
使用java代码的基本写法

FileInputStream fin = null;  
try {  
    fin = new FileInputStream("test.txt");  
    BufferedReader br = new BufferedReader(new InputStreamReader(fin));  
    String line = null;  
    while ((line = br.readLine()) != null) {  
        System.out.println(line);  
    }  
}  catch (FileNotFoundException e) {  
    // TODO: handle exception  
}  catch (IOException e) {  
    // TODO: handle exception  
}  finally {  
    try {  
        if (fin != null) {  
            fin.close();  
        }  
    }  
    catch (IOException e2) {  
        // TODO: handle exception  
    }  
}  
对一个文件进行读取的时候,基本上都会用到上面的代码,重复的写这些代码让人感觉很枯燥,同时在阅读?
这样的代码的时候也极易干扰视线。真正要干的事情也就是把文件内容输出而已。?
而在groovy中输出文件的内容仅需要一行代码?
println new File("test.txt").text 

代码里没有流的出现,没有资源关闭的出现,也没有异常控制的出现,所有的这些groovy已经搞定了。?
看到这样的代码是否有种清风拂面的感觉呢?呵呵!?

下面介绍下groovy中File的一些接口:?
1、对文件内容的操作?

File file = new File('C:UsersberdyDesktoptest.txt')  
//使用系统默认的编码处理文件流  
file.eachLine {println it }  
//指定处理流的编码  
file.eachLine("utf8") {println it  }  
//指定文件内容行标的起始数字,默认为1,根据需要设置为其他数值  
file.eachLine("utf8",10) {str,lineNumber->  
    println str  
    println lineNumber }  
  
//对文件内容的每一行进行分割处理,比较常用在处理csv文件  
file.splitEachLine(",") {println it  }  
  
//在闭包中定义过滤逻辑,对文件内容进行过滤处理  
file.filterLine {String str->  
    if (str.contains('code'))  
        println str  
}.writeTo(new PrintWriter(System.out))  
  
file.append('hello world!')  
  
//转为Writable对象,可重定向输出  
file.asWritable()  

2、对目录进行操作?

File file = new File('.')  
file.eachFileMatch(~/.*.txt/) {File it-> println it.name  } //使正则表达式匹配文件名  
file.eachFileMatch(FILES,~/.*.txt/) { File it-> println it.name  }  
  
new File(".").eachFileRecurse {  
    println it.getPath();  
}  

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读