专业的JAVA编程教程与资源

网站首页 > java教程 正文

java.io流(javaIO流的封装)

temp10 2024-09-14 12:54:52 java教程 12 ℃ 0 评论

java.io

功能分:输入流 i 输出流 o

java.io流(javaIO流的封装)

内容形式:字符流 字节流

字节流

输入流 InputStream FileInputStream DataInputStream BufferedInputStream ObjectInputStream PrintStream

输出流 OutputStream FileOutputStream DataOutputStream BufferedOutputStream ObjectOutputStream

基础io操作:FileInputStream FileOutputStream

带缓冲区:BufferedInputStream BufferedOutputStream

按顺序和内容格式: DataInputStream DataOutputStream

序列化对象:ObjectInputStream ObjectOutputStream

字符流:

输入流:Reader FileReader BufferedReader InputStreamReader

输出流:Writer FileWriter BufferedWriter InputStreamWriter PrintWriter

基础io操作:FileReader FileWriter

带缓冲区:BufferedReader BufferedWriter

转换:InputStreamReader InputStreamWriter

格式化输出:PrintWriter

复制文件:输入流读文件,输出流写到另外一个地方

通常读取文本文件 防止乱码:

先字节流

转成字符流 -规定转换的格式

字符流读

序列化:对象实现Serializable

关联对象一定也要实现Serializable

读写文件

File delete exists() createNewFile() getName getPath getAbsolutePath()

isFile isDirectory() mkdir() mkdirs()

功能分:读文件(输入流) 写文件(输出流)

内容形式:字符流(16位unicode字符读写文件) 字节流(8位字节读写文件)

字符流读写文本比较快

字节流读写文不比较慢


字符流只能读写文本

字节流可以读文本,还可以读图片,读音频,视频

字节流:

输入流 InputStream

子类 FileInputStream

方式1:

1建立通道

InputStream is = new FileInputStream(要读的文件);

2 获得流的有效字节数

int len=is.available();

3 创建一个字节数组 ,用来存流读出来的内容

byte[] arr = new byte[len];

4 从流中读内容

is.read(arr);

5 关闭流

方式2:

1建立通道

InputStream is = new FileInputStream(要读的文件);

2 建立一个大小适中的数组

byte[] arr = new byte[10];


3 声明一个变量 记录每次都出的字节数

int len =0;


4 循环着读,当读出长度为-1时,结束循环

while( (len=is.read(arr))!=-1)

{

}

5 写循环体,把读出的内容累加到StringBuffer

StringBuffer buf = new StringBuffer();

while( (len=is.read(arr))!=-1)

{

buf.append(new String(arr,0,len));

}

6 打印输出 关闭流

输出流 OutputStream

FileOutputStream

写文件:

1 FileOutputStream out=new FileOutputStream(要写入数据的文件路径和名字);

String xx="sdfsdfsdf";

byte[] arr = xx.getBytes();

2 out.write(byte[] arr);


3 流关闭

字符流

读文件 Reader

FileReader

1建立通道

Reader is = new FileReader(要读的文件);

2 建立一个大小适中的数组

char[] arr = new char[10];


3 声明一个变量 记录每次都出的字节数

int len =0;


4 循环着读,当读出长度为-1时,结束循环

while( (len=is.read(arr))!=-1)

{

}

5 写循环体,把读出的内容累加到StringBuffer

StringBuffer buf = new StringBuffer();

while( (len=is.read(arr))!=-1)

{

buf.append(char[]);

}

6 打印输出 关闭流

写文件 Writer

1 FileWriter out=new FileWriter(要写入数据的文件路径和名字);

String xx="sdfsdfsdf";


2 out.write(xx);


3 流关闭

处理流:都不能直接去读写文件,基于四个基础流

带缓冲区的流

BufferedInputStream

BufferedOutputStream

BufferedReader

BufferedWriter


带缓冲区写的流,关闭前要清空

转换流:

InputStreamReader

OutputStreamWriter

把字节流转换成字符流

按类型,顺序读写的流:

DataInputStream

DataOutputStream


格式化输出

printWriter

printStream

序列化流:ObjectOutputStream ObjectInputStream

序列化过程

1 对象实现接口Serializable

2 建立字节流 FileOutputStream

3 把基础字节流包装成 ObjectOutputStream new ObjectOutputStream( new FileOutputStream(要写的文件));

4 用ObjectOutputStream.writeObject(对象);

5 关闭流

反序列化

1 对象实现接口Serializable

2 建立字节流 FileInputStream

3 把基础字节流包装成 ObjectInputStream new ObjectInputStream( new FileInputStream(要读的文件));

4 用ObjectInputStream.readObject();

5 关闭流

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表