java快捷文件处理惩罚
由于以前回收的一些典范形式都涉及到文件处理惩罚,所以各人也许会猜疑为什么要举办那么多的代码输入——这正是装饰器方案一个缺点。本部门将向各人展示如何建设和利用典范文件读取和写入设置的快捷版本。这些快捷版本均置入packagecom.bruceeckel.tools中(自第5章开始建设)。为了将每个类都添加到库内,只需将其置入适当的目次,并添加对应的package语句即可。
7. 快速文件输入
若想建设一个工具,用它从一个缓冲的DataInputStream中读取一个文件,可将这个进程封装到一个名为InFile的类内。如下所示:
//: InFile.java // Shorthand class for opening an input file package com.bruceeckel.tools; import java.io.*; public class InFile extends DataInputStream { public InFile(String filename) throws FileNotFoundException { super( new BufferedInputStream( new FileInputStream(filename))); } public InFile(File file) throws FileNotFoundException { this(file.getPath()); } } ///:~
无论构建器的String版本照旧File版本都包罗在内,用于配合建设一个FileInputStream。
就象这个例子展示的那样,此刻可以有效淘汰建设文件时由于反复强调造成的问题。
8. 快速输格外式化文件
亦可用同范例的要领建设一个PrintStream,令其写入一个缓冲文件。下面是对com.bruceeckel.tools的扩展:
//: PrintFile.java // Shorthand class for opening an output file // for human-readable output. package com.bruceeckel.tools; import java.io.*; public class PrintFile extends PrintStream { public PrintFile(String filename) throws IOException { super( new BufferedOutputStream( new FileOutputStream(filename))); } public PrintFile(File file) throws IOException { this(file.getPath()); } } ///:~
留意构建器不行能捕捉一个由基本类构建器“掷”出的违例。
9. 快速输出数据文件
最后,操作雷同的快捷方法可建设一个缓冲输出文件,用它生存数据(与由人寓目标数据名目相反):
//: OutFile.java // Shorthand class for opening an output file // for data storage. package com.bruceeckel.tools; import java.io.*; public class OutFile extends DataOutputStream { public OutFile(String filename) throws IOException { super( new BufferedOutputStream( new FileOutputStream(filename))); } public OutFile(File file) throws IOException { this(file.getPath()); } } ///:~
很是奇怪的是(也很是不幸),Java库的设计者居然没想到将这些便利法子直接作为他们的一部门尺度提供。