JAVA自学-DAY12+13

字节流

FileInputSteam 输入流:将本地中的数据读到程序

FileOutputSteam 输出流:将程序中的数据写到本地文件

FileOutputSteam创建过程

1.创建字节输出流对象

细节1:参数是字符串表示的路径或者File对象都是可以的

细节2:如果文件不存在,只要确保父类在,就会新建。

细节3:如果文件存在,会清空原有的数据,替换为新的

2.写数据

细节:write方法的参数是整数,但是却转换为了对应的字符

write(int b ) 一次一个字符

write(byte[] b) 一次一个数组

write(byte[] b, int off , int len) 一次写一个部分的数组

换行写与续写

换行符:\r\n 但是\r或者\n都可以

续写:在创建对象时,append改为true

3.释放数据

每次使用 都需要释放资源

FileInputStream创建过程

1.创建对象

细节1:文件不存在直接报错

2.读取数据

细节1:一次一个字节,读出来是ASCII表的数字

细节2:文件末尾为-1

循环读取

read:读取一个数据就移动一次指针

3.释放资源

每次使用 都需要释放资源

字节流文件拷贝:

1.创建读写对象

2.拷贝

边读边写

3.释放

先创建的后释放

FileinputStream一次读多个字节

read(byte[] buffer)

大文件的拷贝

byte[] bytes = new byte[1024 * 1024 *5]; int len; while ((len = fis.read(bytes)) != -1){ fos.write(len); }

try...catch异常

Java编码中

getBytes() 使用默认方式进行编码

getBtyes(String name) 使用指定方式进行编码

字符流 = 字节流 + 字符集

输入流:一次读一个字节,遇到中文,一次读多个字节

输出流:会将数据按照指定的编码方式进行编码,变成字节再写到文字

Reader: FileReader(本地文件的输入流)

read():1.默认也是一个字节一个字节的读取,如果遇到中文就会一次读取多个

2.在读取之后,方法的底层还会进行解码并转换为十进制。

创造步骤:

第一步:创建对象

public FileReader(File file)

public FileReader(String pathname)

第二步:读取数据

public int read()

public int read(char[] buffer)

第三步:释放数据

Writer FileWriter(本地文件的输出流)

续写开关:在创建的时候,append填写true

4个缓冲流:

BufferedInputStream

BufferedOutputStream

BufferedReader

BufferedWriter

缓冲流的作用

提升文件读写的效率

字节流和字符流的使用场景

字节流:拷贝任意类型的(用于拷贝)

字符流:读取纯文本中的数据、往纯文本文件中写出数据

练习1、拷贝一个文件夹,考虑子文件夹

private static void copyDir(File src, File dest) throws IOException { dest.mkdir(); //递归 //1.进入数据源 File[] files = src.listFiles(); //2.遍历数组 for (File file : files) { if (file.isFile()) { //3.判断文件,拷贝(字节流用于拷贝) FileInputStream fis = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(new File(dest,file.getName())); byte[] bytes = new byte[1024]; int len; while ((len = fis.read(bytes)) != -1) { fos.write(bytes, 0, len); } fos.close(); fis.close(); } else { //4.判断文件夹——>递归 copyDir(file,new File(dest , src.getName())); } } }

需要品味!

基本流:FileInputStream , FileOutputStream , FileReader , FileWriter

缓冲流(高级流):BufferedInputStream(字节缓冲输入流) , BufferedOutputStream(字节缓冲输出流)

将基本流包装为高级流,自带了8192的缓冲区提高性能

字节缓冲输入流:public BufferedInputStream(InputStream is)

字节缓冲输出流:public BufferedOutputStream(OutputStream os)

字符缓冲流:FileReader , FileWriter 自带了8192的缓冲区提高性能

字符缓冲输入流:public BufferedReader(Reader r)

readLine() 一次读一整行 特有方法

字符缓冲输出流:public BufferedWriter(Writer r)

newLine() 换行符 特有方法

高级流:转换输入流-是字符流和字节流之间的桥梁

InputStreamReader:

OutputStreamWriter;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值