* 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. 保证流对象变量,作用域正确
2. catch里面,怎么处理异常
输出异常,目的看到底哪里出了问题
因为可能是硬件问题,只能听下程序,从新尝试
3. 如果流对象创建失败了,需要关闭资源吗?
new对象的时候,失败了,没有占用系统资源
释放资源的时候,对流对象判断null,如果是null,不需要close资源
===============================================================================================
包:java.io.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);解决
public static void input() throws IOException{
* FileInputStream fin = new FileInputStream(“/kluter/temp/fileOutS”);*
* int ret = 0;*
* String s = null;*
* byte[] barr = new byte[3];*
* while((ret = fin.read(barr)) != -1){*
* out.println(ret);*
* s = new String(barr, 0, ret);*
* out.println(s);*
* }*
* fin.close();*
}
===========================================================================
public static void copy_byte() throws IOException{
* FileInputStream fin = new FileInputStream(“/kluter/temp/fileOutS”);*
* FileOutputStream fout = new FileOutputStream(“/kluter/temp/fileCopy1”, true);*
* int ret = 0;*
* while((ret = fin.read()) != -1){*
* out.print((char)ret);*
* fout.write(ret);*
* }*
* fin.close();*
* fout.close();*
}
为了提高复制的效率,需要采用字节数组的方式来复制文件:
public static void copy_arr() throws IOException{
* FileInputStream fin = new FileInputStream(“/kluter/temp/fileOutS”);*
* FileOutputStream fout = new FileOutputStream(“/kluter/temp/fileCopy2”, true);*
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
更多笔记分享
utS");*
* FileOutputStream fout = new FileOutputStream(“/kluter/temp/fileCopy2”, true);*
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
[外链图片转存中…(img-1I4B1YCH-1714304865926)]
[外链图片转存中…(img-5xuCECx4-1714304865927)]
更多笔记分享
[外链图片转存中…(img-AeGWNcNV-1714304865927)]