最牛网站建设是谁,手机端详情页,重庆营销型网站,网站在建设时不容忽略的一些细节计算机最重要的功能是处理数据。一个有用的计算机语言需要拥有良好的IO功能#xff0c;以便让未处理的数据流入程序#xff0c;让已处理的数据流出。与其他语言相比#xff0c;Java的IO功能显得复杂。在其他语言中#xff0c;许多IO功能(比如读取文件)#xff0c;是被封装…计算机最重要的功能是处理数据。一个有用的计算机语言需要拥有良好的IO功能以便让未处理的数据流入程序让已处理的数据流出。与其他语言相比Java的IO功能显得复杂。在其他语言中许多IO功能(比如读取文件)是被封装好的可以用一两行程序实现。在Java中程序员往往需要多个层次的装饰(decoration)才能实现文件读取。相对的复杂性带来的好处是IO的灵活性。在Java中程序员可以控制IO的整个流程从而设计出最好的IO方式。我们将在下文看到更多。IO示例下面是我用于演示的文件file.txtHello World!Hello Nerd!我们先来研究一个文件读取的例子:import java.io.*;public class Test {public static void main(String[] args) {try {BufferedReader br new BufferedReader(new FileReader(file.txt));String line br.readLine();while (line ! null) {System.out.println(line);line br.readLine();}br.close();} catch (IOException e) {System.out.println(IO Problem);}}}这段程序中包含一个try...catch...finally的异常处理器。可参考Java进阶02 异常处理装饰器与功能组合程序IO的关键在于创建BufferedReader对象br:BufferedReader br new BufferedReader(new FileReader(file.txt));在创建的过程中我们先建立了一个FileReader对象这个对象的功能是从文件file.txt中读取字节(byte)流并转换为文本流。在Java中标准的文本编码方式为unicode。BufferedReader()接收该FileReader对象并拓展FileReader的功能新建出一个BufferedReader对象。该对象除了有上述的文件读取和转换的功能外还提供了缓存读取(buffered)的功能。最后我们通过对br对象调用readLine()方法可以逐行的读取文件。(缓存读取是在内存中开辟一片区域作为缓存该区域存放FileReader读出的文本流。当该缓存的内容被读走后(比如readLine()命令)缓存会加载后续的文本流。)BufferedReader()是一个装饰器(decorator)它接收一个原始的对象并返回一个经过装饰的、功能更复杂的对象。修饰器的好处是它可以用于修饰不同的对象。我们这里被修饰的是从文件中读取的文本流。其他的文本流比如标准输入网络传输的流等等都可以被BufferedReader()修饰从而实现缓存读取。下图显示了br的工作方式数据自下而上流动:上述的装饰过程与Linux中的文本流思想很相似。在Linux中我们使用类似函数的方式来处理和传递文本流。在Java中我们使用了装饰器。但它们的目的都类似就是实现功能的模块化和自由组合。更多的组合事实上Java提供了丰富的装饰器。FileReader中合并了读取和转换两个步骤并采用了常用的默认设置比如编码采取unicode。我们可以使用FileInputStream InputStreamReader的组合来替代FileReader从而分离读取字节和转换两个步骤并对两个过程有更好的控制。(当然FileReader的使用更加方便。InputStreamReader是将FileInputStream转换成一个Reader用于处理unicode文本)箭头表示数据流动方向流的读写来自于四个基类: InputStream, OutputStream, Reader和Writer。InputStream和Reader是处理读取操作OutputStream和Writer是处理写入操作。它们都位于java.io包中。继承关系如下:java.io此外IOException有如下衍生类:IOExceptionReader和Writer及其衍生类是处理unicode文本。如我们看到的Buffered Reader, InputStreamReader或者FileReader。InputStream和OutputStream及其衍生类是处理字节(byte)流。计算机中的数据都可以认为是字节形式所以InputStream和OutputStream可用于处理更加广泛的数据。比如我们可以使用下面的组合来读取压缩文件中包含的数据(比如整数):箭头表示数据流动方向我们从压缩文件中读出字节流然后解压缩最终读出数据。写入写入(write)操作与读取操作相似。我们可以通过使用装饰实现复杂的写入功能。这里是一个简单的写入文本的例子:import java.io.*;public class Test {public static void main(String[] args) {try {String content Thank you for your fish.;File file new File(new.txt); // create the file if doesnt// existsif (!file.exists()) {file.createNewFile();}FileWriter fw new FileWriter(file.getAbsoluteFile());BufferedWriter bw new BufferedWriter(fw);bw.write(content);bw.close();} catch (IOException e) {System.out.println(IO Problem);}}}上面创建了file对象用于处理文件路径。总结这里只是对Java IO的基本介绍。Java的IO相对比较复杂。Java程序员需要花一些时间来熟悉java.io中的类及其功能。By Facker:package blogjavaTest;import java.io.*;/*** author Facker* title Reader Writer* value 文件的写入和读出*/public class Test {void test() {try {String content Thank you for Vamei.;File file new File(F:new.txt); // create the file if doesnt// existsif (!file.exists()) {file.createNewFile();}FileWriter fw new FileWriter(file.getAbsoluteFile());BufferedWriter bw new BufferedWriter(fw);bw.write(content);bw.close();} catch (IOException e) {System.out.println(IO Problem);}}void test1() {try {BufferedReader br new BufferedReader(new FileReader(F:new.txt));String line br.readLine();while (line ! null) {System.out.println(line);line br.readLine();}br.close();} catch (IOException e) {System.out.println(IO Problem);}}public static void main(String[] args) {Test s new Test();s.test(); // 写入s.test1();// 读出}}