浅谈java输入输出流
本文转自:http://cyp-034.blog.163.com/blog/static/2823190520074691849380/
stream
代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Inputstream和
Out stream)都包括两种类型:
(1)字节流
表示以字节为单位从stream中读取或往stream中写入信息,即io包中的inputstream类和outputstream类的派生类。通常用
来读取二进制数据,如图象和声音。
(2)字符流
以Unicode字符为导向的stream,表示以Unicode字符为单位从stream
中读取或往stream中写入信息。
区别:
Reader和Writer要解决的,最主要的问题就是国际化。原先的I/O类库只支持8位
的字节流,因此不可能很好地处理16位的Unicode字符流。Unicode是国际化的字符集(更何况Java内置的char就是16位的
Unicode字符),这样加了Reader和Writer之后,所有的I/O就都支持Unicode了。此外新类库的性能也比旧的好。
但是,Read和Write并不是取代InputStream和OutputStream,
有时,你还必须同时使用"基于byte的类"和"基于字符的类"。为此,它还提供了两个"适配器(adapter)"类。
InputStreamReader负责将InputStream转化成Reader,而OutputStreamWriter则将
OutputStream转化成Writer。
一.流的层次结构
定义:
(1)
java将读取数据对象成为输入流,能向其写入的对象叫输出流。结构图如下:输入流:
输出流
二.InputStream类
inputstream类和outputstream类都为抽象类,不能创建对象,可以通过
子类来实例化。
InputStream是输入字节数据用的类,所以InputStream类提供了3种重载
的read方法.Inputstream类中的常用方法:
(1) public abstract int read(
):读取一个byte的数据,返回值是高位补0的int类型值。
(2) public int read(byte b[
]):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的
(3) public int read(byte b[ ], int
off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。
(4) public int available(
)
相关文档:
import java.util.Arrays;
public class Sort {
//冒泡排序(从头到尾排)
public static void bubbleSort(int[] arrays)
{
//第一次循环从第一个元素开始,到倒数第二个元素
for(int i=0;i<arrays.length-1;i++)
{
for(int j=1 ......
记得vamcily 曾问我:“为什么获取数组的长度用.length(成员变量的形式),而获取String的长度用.length()(成员方法的形式)?”
我当时一听,觉得问得很有道理。做同样一件事情,为什么采用两种风格迥异的风格呢?况且,Java中的数组其实是完备(full-fledged)的对象,直接暴露成员变量,可能不是一种很OO的风格。 ......
The Java virtual machine defines various runtime data areas that are used during execution of a program. Some of these data areas are created on Java virtual machine start-up and are destroyed only when the Java virtual machine exits. Other data areas are per thread. Per-thread data areas are create ......
Java编程时,为类DialogTry2添加关闭窗口事件,我在构造方法中采用事件适配器来实现:
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
&nbs ......
public class Parent
{
//1
static int a = 1;
//2
static
{
a = 10;
System.out.println("parent static c ......