最全Java IO 体系(二): inputstream与outputstream,java电商购物车面试题

最后,附一张自己面试前准备的脑图:

image

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典

  • Java核心知识整理

image

  • Spring全家桶(实战系列)

image.png

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

image

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

***    f.close();***

}

1.2.2 写字节数组到文件

写一个完整的字节数组:

public static void demo() throws IOException{

*    FileOutputStream f = new FileOutputStream(“/kluter/temp/fileOutS”);*

*    byte[] barr = {10, 11, 12, 13, 14, 15};*

*    f.write(barr);*

*    f.close();*

}

写部分字节数组:

public static void demo() throws IOException{

*    FileOutputStream f = new FileOutputStream(“/kluter/temp/fileOutS”);*

*    byte[] barr = {10, 11, 12, 13, 14, 15};*

*    f.write(barr, 2, 3);*

*    f.close();*

}

由于字节数组输入单个字节很麻烦,提供用String转换写字节数组的简便方式:

public static void demo() throws IOException{

*    FileOutputStream f = new FileOutputStream(“/kluter/temp/fileOutS”);*

***    String s = “abcdef”;***

***    f.write(s.getBytes());***

*    f.close();*

}

1.2.3. 追加数据到文件

使用带boolean append参数的双参构造器

FileOutputStream (File file, boolean append)

FileOutputStream (String name, boolean append)

public static void demo() throws IOException{

FileOutputStream f = new FileOutputStream(“/kluter/temp/fileOutS”, true);

*    String s = “abcdef”;*

*    f.write(s.getBytes());*

*    f.close();*

}

1.2.4. 换行符

加\n

public static void demo() throws IOException{

*    FileOutputStream f = new FileOutputStream(“/kluter/temp/fileOutS”, true);*

*    String s = “abcdef\n”;*

*    f.write(s.getBytes());*

*    f.close();*

}

1.3 I/O中的异常处理


说明:

1. 保证流对象变量,作用域正确

2. catch里面,怎么处理异常

输出异常,目的看到底哪里出了问题

因为可能是硬件问题,只能听下程序,从新尝试

3. 如果流对象创建失败了,需要关闭资源吗?

new对象的时候,失败了,没有占用系统资源

释放资源的时候,对流对象判断null,如果是null,不需要close资源

image

2. InputStream接口:所有字节输入流的超类

===============================================================================================

包:java.io.InputStream

作用:读取任意文件,每次读取一个字节

2.1. InputStream所有方法


abstract int read() 读取输入流的下1个字节

int read(byte[] b) 从输入流读取一些字节存储到缓冲区

int read(byte[] b, int off, int len) 从输入流偏移量off位置开始读取len个字节

void close() 关闭输入流

2.2. FileInputStream类: InputStream接口的一个实现类


构造方法:

FileInputSteam (File file)

FileInputSteam (String name)

2.2.1. 从文件读字节

read()方法的特点,读取一个字节,文件指针移到下一个字节

public int read()返回值:

读取到的字节:成功

-1:到文件末尾了

public static void input() throws IOException{

*    FileInputStream fin = new FileInputStream(“/kluter/temp/fileOutS”);*

*    int ret = 0;*

*    while(ret != -1){*

*        ret = fin.read();*

*        out.println(ret);*

*    }*

*    fin.close();*

}

2.2.2. 从文件读到字节数组

public int read(byte[] b)

返回值:

返回读取到的字节数:成功

-1:已经到达文件末尾

根据read返回读取的字节数来决定循环遍历:

public static void input() throws IOException{

*    FileInputStream fin = new FileInputStream(“/kluter/temp/fileOutS”);*

*    int ret = 0;*

*    byte[] barr = new byte[100];*

*    ret = fin.read(barr);*

*    out.print(ret);*

*    out.print("******************");

*    int idx = 0;*

*    while(idx < ret){*

*        out.print(barr[idx]);*

*        idx++;*

*    }*

*    fin.close();*

}

将获取的字节数组使用String的构造函数转换成String来显示:

public static void input() throws IOException{

*    FileInputStream fin = new FileInputStream(“/kluter/temp/fileOutS”);*

*    int ret = 0;*

*    byte[] barr = new byte[100];*

*    ret = fin.read(barr);*

*    out.print(ret);*

*    out.print("******************");

*    String s = new String(barr);*

*    out.print(s);*

*    fin.close();*

}

利用读取到的字节数,循环read到字节数组:

一定要注意!倒数第二次read的时候,不是刚好读取数组长度个字节的情况下,打印数组有倒数第三次read字节的情况,用**s = new String(barr, 0, ret);解决

最后

由于细节内容实在太多了,为了不影响文章的观赏性,只截出了一部分知识点大致的介绍一下,每个小节点里面都有更细化的内容!

小编准备了一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

数组有倒数第三次read字节的情况,用**s = new String(barr, 0, ret);解决

最后

由于细节内容实在太多了,为了不影响文章的观赏性,只截出了一部分知识点大致的介绍一下,每个小节点里面都有更细化的内容!

[外链图片转存中…(img-6BhrPChS-1715556535811)]

小编准备了一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》

[外链图片转存中…(img-6QGfsBeA-1715556535812)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值