Groovy笔记(8)_File

<p><span style="font-size: medium;"><strong>File 类介绍</strong></span></p>
<p></p>
<p>1、抽象路径名:File类提供抽象的,独立于系统的分级路径名试图。</p>
<p> D:/clat/test.groovy(注意抽象路径名使用/,不是/ )</p>
<p>2、File可以表示文件或目录</p>
<p>3、Groovy对java.io.File进行了增强(参考GDK Doc)</p>
<p> def toysFile = new File("src/TestToysFile.dat")</p>
<p> if(!toysFile.exists()){</p>
<p> toysFile.createNewFile()</p>
<p> toysFile.append('Groovy and clat' + '/n')</p>
<p>}</p>
<p></p>
<p>4、File类的其他常用方法</p>
<ul>
<li>Boolean delete():删除文件或目录</li>
<li>void eachFile(Closure cl):目录中每个文件应用闭包</li>
<li>void eachFileResurse(Closure cl):同上并对子目录递归</li>
<li>void eachLine(Closure cl):逐行遍历文件并应用闭包</li>
<li>String getPath():将抽象路径名称转换为路径名字符串。</li>
<li>String getText():读文件返回字符串</li>
<li>Boolean isDirectory():是否目录</li>
<li>Boolean mkdir():创建目录</li>
<li>void withPrintWriter(Closure cl):获取打印速写器。//具体不明,可以查API</li>
</ul>
<p></p>
<p><span style="font-size: medium;"><strong>写多个对象到文件的方法</strong></span></p>
<p><span style="font-size: medium;"><strong></strong></span></p>
<p></p>
<p>1、基础知识:将对象序列化到文件时,如果多个对象序列化到同一个文件,会覆盖头部信息,使得读取对象失败,所以要做处理。</p>
<p>2、</p>
<p>public class FileObjectOutputStream extends ObjectOutputStream{</p>
<p> private File file;</p>
<p> private boolean append;</p>
<p> //构造函数</p>
<p> public FileObjectOutputStream() throws IOException,Exception{}</p>
<p>public FileObjectOutputStream(File file) throew IOException,Exception{this(file,false);}</p>
<p> public FileObjectOutputStream(File file,boolean append) throws IOException, Exception{</p>
<p> supre(new FileOutputStream(file,append));</p>
<p>this.file = file;</p>
<p> this.append = append;</p>
<p> }</p>
<p>//当文件中有对象时覆盖writeStreamHeader()方法,以便Reset流的头部信息</p>
<p> protected void writeStreamHeader()throew IOException{</p>
<p> System.out.println("/t/tReset Stream Header!")</p>
<p> super.reset();</p>
<p> }</p>
<p>}</p>
<p>3、Demo</p>
<p>def toysFile = new File("src/testToysFile.dat")</p>
<p>if(!toysFile.existe()){</p>
<p> toysFile.createNewFile()</p>
<p> toysFile.append('Groovy hello!')</p>
<p>}</p>
<p>def newToy = new Toy(toyName:'toy',unitPrice:'100')</p>
<p>def objOutput</p>
<p>if(toysFile.length() == 0 ){ // 如果文件时新的 则新建</p>
<p>objOutput = new ObjectOutputStream(new FileOutputStream(toysFile, true)) </p>
<p>}else{ //如果文件已经被写过需要特殊处理</p>
<p> objOutput = new FileObjectOutputStream(toysFile, true)</p>
<p>}</p>
<p>objOutput.writeObject(new Toy1)</p>
<p>objOutput.flush();</p>
<p>objOutput.close()</p>
<p></p>
<p></p>
<p></p>
<p><span style="font-size: medium;"><strong>读取文件</strong></span></p>
<p></p>
<p>1、</p>
<p>def objInput</p>
<p>try{</p>
<p> objInput = new ObjectInputStream(new FileInputStream(toysFile))</p>
<p> def obj = objInput.readObject()</p>
<p>while(obj){</p>
<p>prinltn obj.toyName + ':' + obj.unitPrice</p>
<p> obj = objInput.readObject()</p>
<p> }</p>
<p>}catch(EOFException e){}</p>
<p>if(objInput !=null){</p>
<p> objInput.close()</p>
<p>}</p>
<p></p>
<p></p>
<p></p>
<p><span style="font-size: medium;"><strong>多删几次文件</strong></span></p>
<p></p>
<p>1、基础知识:Java中删除文件不一定成功,所有策略是多删除几次。</p>
<p>2、</p>
<p>def forceDeleteFile(File file){</p>
<p> Boolean result = false</p>
<p> def delCount = 0</p>
<p>while(!result && delCount ++ <10){</p>
<p>System.gc()</p>
<p> result = file.delete()</p>
<p> }</p>
<p>return result</p>
<p>}</p>
<p></p>
<p></p>
<p><span style="font-size: medium;"><strong></strong></span></p>
<p><span style="font-size: medium;"><strong></strong></span></p>
<p><span style="font-size: medium;"><strong></strong></span></p>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值