在文件读写部分中,我们如果要读取格式化数据.可以使用DataInputStream,它是以俄国面向字节的I/O类,因此我们必须使用InputStream类,而不是Reader类,当然我们可以用InputStream以字节的形式读取任何数据(例如一个文件),不过.在这里我们用的是字符串,为了能将字符串转化成适用于ByteArrayInputStream的字节数组,String包含了一个可以将字符串转化为字节数组的getByte()方法。所以我们就持有了一个可传递给DataInputStream的InputStream。
try{
DataInputStream in3=new DataInputStream(new ByteArrayInputStream(s2.getBytes()));//s2是String类型的
System.out.print((char) in3.readByte());
}cacth(EOFException e)
{System.out.println(“End of stream”);//此时我们是通过捕获异常来检测输入的末尾,但是使用异常进行流控制,被认为是对异常特性的错误使用
}
我们还可以通过available()方法查看还有多少可供存取的字符。例如
public class TestEOF{
public static void main(String[] args) throws IOException
{
DataInputStream in=new DateInputSteam(new BufferedInputStream(new FileInputStream(“TestEOF.java”)));
while(in.available()!=0)
{
System.out.print((char)in.readByte());
}
}
}
关于文件输出:
首先创建与制定文件连接的FileWriter,但是为了显著增加I/O操作的性能,我们通常会用BufferedWriter将其包装起来用一缓冲输出,然后为了格式化,将它转化成PrintWriter。按照这种方式创建数据文件可作为普通文本文件读取。
标准I/O:
JAVA提供了System.out,System.in,System.err.其中System.out已经事先被包装成了printStream对象。System.err同样也是PrintStream对象。但是System.in却是一个没有包装过的未经加工的InputStream,这就意味着我们可以立即使用System.out和System.err,但是在读取System.in之前必须对其进行包装。
通常我们会用readLine()一次一行的读取输入,因此我们会将Sysetem.in包装成BufferReader来使用。所以我们必须用InputStreamReader把System.in转化成Reader
注:readLine()会抛出IOException所以要注意声明。
将System.out转化成PrintWriter
System.out是一个PrintStream而PrintStream是一个OutputStream。PrintWriter有一个可以接受OutputStream作为参数的构造器。
PrintWriter out=new PrintWriter(System.out,true);
2008/11/16 | sunny | 476 Views