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

使用Groovy操作文件

发布时间:2020-12-14 16:41:47 所属栏目:大数据 来源:网络整理
导读:1. 读文件 读文件内容 在groovy中输出文件的内容: println new File("tmp.csv").text 上面代码非常简单,没有流的出现,没有资源关闭的出现,也没有异常控制的出现,所有的这些groovy已经搞定了。 读取每一行内容: File file = new File('tmp.csv')assert

1. 读文件

读文件内容

在groovy中输出文件的内容:

println new File("tmp.csv").text

上面代码非常简单,没有流的出现,没有资源关闭的出现,也没有异常控制的出现,所有的这些groovy已经搞定了。

读取每一行内容:

File file = new File('tmp.csv')
assert file.name == 'tmp.csv'
assert ! file.isAbsolute()
assert file.path == 'tmp.csv'
assert file.parent == null

//使用系统默认的编码处理文件流  
file.eachLine {println it }  
//指定处理流的编码
file.eachLine("UTF-8") { println it }

file.eachLine("UTF-8",10) {str,no->  
    println str  
    println no }
对文件中每一行的内容做处理:

file.splitEachLine("t") { println it  }

//以大写行式输出文件内容  
lineList = file.readLines();  
liineList.each {  
  println it.toUpperCase();  
}

file.filterLine {String str->  
    if (str.contains('code'))  
        println str  
}.writeTo(new PrintWriter(System.out)) 

解析 xml 文件

<?xml version="1.0" encoding="UTF-8"?> 
<customers> 
  <corporate> 
    <customer name="bill gates" company="microsoft"></customer> 
    <customer name="steve jobs" company="apple"></customer> 
    <customer name="bill dyh" company="sun"></customer> 
  </corporate> 
  <consumer> 
    <customer name="jone Doe"></customer> 
    <customer name="jane Doe"></customer>    
  </consumer> 
</customers>

def customers = new XmlSlurper().parse(new File("customers.xml")) 
/*对文件进行解析*/ 
for(customer in customers.corporate.customer){ 
    println "${customer.@name} works for${customer.@company}"; 
} 

解析 propeties 文件

参考?groovy: How to access to properties file?,代码如下:

def props = new Properties()
new File("message.properties").withInputStream { 
  stream -> props.load(stream) 
}
// accessing the property from Properties object using Groovy's map notation
println "capacity.created=" + props["capacity.created"]

def config = new ConfigSlurper().parse(props)
// accessing the property from ConfigSlurper object using GPath expression
println "capacity.created=" + config.capacity.created

另外一种方式:

def config = new ConfigSlurper().parse(new File("message.groovy").text)
message.groovy 内容如下:

capacity {
  created="x"
  modified="y"
}

2. 操作目录

列出目录所有文件(包含子文件夹,子文件夹内文件) :

def dir = new File(dirName)  
if (dir.isDirectory()) {  
    dir.eachFileRecurse { file ->  
        println file  
    }  
} 

dir.eachFileMatch(~/.*.txt/) {File it-> println it.name  } //使正则表达式匹配文件名  
dir.eachFileMatch(FILES,~/.*.txt/) { File it-> println it.name  } 

3. 写文件

import java.io.File  
  
def writeFile(fileName) {  
    def file = new File(fileName)  
      
    if (file.exists())   
        file.delete()  
          
    def printWriter = file.newPrintWriter() //   
      
    printWriter.write('The first content of file')  
    printWriter.write('n')  
    printWriter.write('The first content of file')  
      
    printWriter.flush()  
    printWriter.close()  

除了? file.newPrintWriter()? 可以得到一个 PrintWriter,类似方法还有? file.newInputStream() ? file.newObjectInputStream() 等。

更简洁写法:

new File(fileName).withPrintWriter { printWriter ->  
     printWriter.println('The first content of file')  
}  

(编辑:李大同)

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

    推荐文章
      热点阅读