Java中流的分类有哪些
流的三种分类方式
按流的方向分为:输入流和输出流。
按流的数据单位不同分为:字节流和字符流。
按流的功能不同分为:节点流和处理流。
字节流InputStream和OutputStream的子类分别有哪些?请举例说明其使用场景。与其对应的字符流分别有哪些?
InputStream类的常用方法有以下几种:
Public abstractintread():读取一个byte数据,返回值是高位补0的int类型值。
Public int read(byteb[]):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的。
public int read(byteb[],intoff,intlen):从输入流中最多读取len个字节数据,存放到偏移量为off的b数组中。
public int availabel():返回输入流中可以读取的字节数。注意,若输入阻塞,当前线程将被挂起,如果InputStream对象调用这个方法的话,它只会返回0,这个方法须由InputStream类的子类调用才有用。
public long skip(longn):忽略输入流中的n个字节,返回值是实际忽略的字节数,跳过一些字节来读取。
public int close():在使用完之后,必须对打开的流进行关闭。
OutputStream类中的常用方法有以下几种:
public void write(byteb[]):将参数b的字节写到输出流中。
public void write(byteb[],intoff,intlen):将参数b的从偏移量off开始的len个字节写入到输出流中。
public abstractvoid write(intb):先将int转换成byte类型,低字节写入到输出流中。
public void flush():将数据缓冲区中的数据全部输出,清空缓冲区。
public void close():关闭输出流并释放与流相关的系统资源。
字节流与字符流的转化是怎样的?Java对此提供了哪些支持?
输入字节流转为字符流需要用到inputstreamReader的构造方法:
InputStreamReader(InputStream in)
如:
InputStreamReader ins = new InputStreamReader(System.in);
InputStreamReader ins = new InputStreamReader(new
FileInputStream(“test.txt”));

输出字符流转为字节流用到OutputStreamWriter或PrintWriter的构造方法:
OutputStreamWriter(OutputStream out)
PrintWriter(OutputStream out)
如:
OutputStreamWriter outs = new OutputStreamWriter(new
FileOutputStream(“test.txt”));

过滤流
两大抽象父类:
FilterInputStream
FilterOutputStream
他们分别重写了InputStream和OutputStream的所有方法,使得他们既能实现基输入输出流流的操作,又能进行数据的特殊操作。使用过滤流时通常需要将过滤流绑定到节点流上,在构造方法中指定要绑定的节点流。
举例(读取文件):
package none;
import java.io.*;
public class Test{
public static void main(String[] args) throws IOException {
InputStreamReader in=new InputStreamReader(new FileInputStream(“a.text”));
char[] b=new char[10];
in.read(b);
System.out.println(b);
}
}

此处输出的是文件中的字符,如果不使用InputStreamReader,则会输出文件中的字节。将字节读取文件流绑字节字符转换流上。

对象的序列化与反序列化
对象的序列化:把动态对象转换为可以传输的字节序列。
对象的反序列化:把字节序列恢复为动态对象。

Java的File类表示什么?有什么作用?
File类主要是JAVA为文件这块的操作(如删除、新增等)而设计的相关类
File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较。

直接处理bai文件和文件系统。File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File还浏览子目录层次结构。很多程序中文件是数据的根源和目标。尽管它们在小应用程序中因为安全原因而受到严格限制,文件仍是存储固定和共享信息的主要资源。Java中的目录当成File 对待,它具有附加的属性——一个可以被 list( )方法检测的文件名列表。

Java对文件的读写分别提供了哪些支持?
本地文件读写编程的基本过程为:
① 生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类);
② 调用FileInputStream或FileOutputStream类中的功能函数如read()、write(int b)等)读写文件内容;
③ 关闭文件(close())。
3 PipedInputStream/PipedOutputStream:
用于管道输入输出(将一个程序或一个线程的输出结果直接连接到另一个程序或一个线程的输入端口,实现两者数据直接传送。操作时需要连结);
4管道的连接:
方法之一是通过构造函数直接将某一个程序的输出作为另一个程序的输入,在定义对象时指明目标管道对象
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream(pInput);
方法之二是利用双方类中的任一个成员函数 connect()相连接
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream();
pinput.connect(pOutput);
5 管道的输入与输出:
输出管道对象调用write()成员函数输出数据(即向管道的输入端发送数据);而输入管道对象调用read()成员函数可以读起数据(即从输出管道中获得数据)。这主要是借助系统所提供的缓冲机制来实现的。
6随机文件读写:
RandomAccessFile类(它直接继承于Object类而非InputStream/OutputStream类),从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)。
随机文件读写编程的基本过程为:
① 生成流对象并且指明读写类型;
② 移动读写位置;
③ 读写文件内容;
④ 关闭文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值