首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java io 详解 上

2012-12-20 
java io 详解 下??6,内存操作流之前讲解流 目标都是文件,现在如果有临时的信息要通过io操作的话如果这些临

java io 详解 下

??6,内存操作流
之前讲解流 目标都是文件,现在如果有临时的信息要通过io操作的话如果这些临时的内容保存在文件之中就很不合理了
因为操作完还要将文件删除,所以此时在io中提供内存操作流,通过内存提供输出和输入的目标是内存。
使用ByteArrayOutputStream和ByteArrayInputStream完成内存的操作流
ByteArrayOutputStream :内存向程序输出
ByteArrayInputStream :程序向内存写入

?

?

?

?

?

?

?

使用PrintStream格式化输出

?

?

?

?

?

9,System类 对IO的支持
System类中存在三个常量:
public static PrintStream out?? 表示一个标准的输出,输出的位置是显示器
public static PrintStream err????? 表示错误,错误的输出
public static PrintStream in??? 表示键盘的输入,标准输入,
9.1 System.out
? System.out是PrintStream的实例化,常用的方法就是向屏幕打印信息,当然如果使用System.out的话也可以直接为OutputStream实例化。

?

?

?

?

?

此时已经实现了键盘输入功能但是回收长度限制,而且在输入中文时会出问题。

?

?

?

?

?

此时长度没有限制了。但是在输入中文是就无法正确读取了 用之后讲解的BufferedReader完成
9.4输出输入重定向
System.out,System.in 都有固定的输出目标,都是屏幕
System.in 有固定的输入目标,都是键盘
但是在System类中提供了一系列的输入输出重定向的方法,可以改变System.out,System.err,System.in 的输入输出位置
System.out 重定向:public static void setOut(PrintStream out)
System.err 重定向:public static void setErr(PrintStream out)
System.in 重定向:public static void setIn(PrintStream out)

?

?

?

?

?

?

之前说过System.err是不希望用户看到的 所以一般不建议改变它的重定向而是改变System.out的重定向。

?

?

?

10,BufferReader
实际上表示缓冲区读取,可以一次性把内容全读取进来
public BufferedReader(Reader in)
那么,如果使用BufferReader接收键盘输入的内容的话,则此时就无法直接实例化了,那么System.in属于InputStream类型的。
java中提供了两个专门的类,字节-字符流的转化类:
InputStreamReader:表示两字节的输入变为字节流
OutputStreamWriter:表示将字符的输出变为字节流
直接使用以上的类就可以完成转换功能,使用以下的方法可以读取数据:
public String readLine() throws IOException
表示一次性读取一行数据,而且一定要记住的是,如果返回的内容是String 是为好操作的,
范例 使用BufferReader完成输入

?


如果想完成键盘的输入功能,以上的操作是最合适的,也是键盘输入数据的标准格式。
11,Scanner
Scaner 是一个新的操作类,是在java.util 包中提供的一个操作类,使用此类可以方便完成输入流的输入操作。

?

下面再看一个可以接受字符串的例子

?此类也可以用于正则匹配

?因为此类接受的是输入流的操作类,所以也可以完成文件的读取

?


使用ObjectOutputStream完成序列化操作

?

?


使用ObjectIntputStream完成反序列化操作

?

?


以上操作实际上是将整个对象进行了序列化操作,如果现在假设类中某个属性不希望被序列化的话,则使用transient关键字声明。

 

热点排行