Java架构师之旅(三十一 基础IO流)
夜光序言:
“何为落?”
“流年,陌路,独人过。”
“可否具体?”
“凭栏,月下,夜独酌。”
“可否再具体?”
“灯火虽俱,万人非你。”
正文:
流:流动,源头到目的地,流在我们java中可以用stream来表示,程序么,肯定是通过标准的方法来输出和输入数据
【记得我学Netty的时候,就关注了核心NIO】
程序与文件|数组|网络连接|数据库,一般都会用到,以程序为中心
分类
流向:输入流和输出流
数据:字节流【二进制,可以包括一切文件音频等】,字符流【文本文件,只可以文本】
功能:节点【包裹源头】
处理【增强功能,提高效能】
字符流和字节流
输入流 inputstream
输出流 outputstream
Read 和 write
package com.Genius.byteIO;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/*夜光:
文件的读取*/
public class Demo1 {
public static void main(String[] args) {
//夜光:1、建立联系,file对象
File src = new File("E:/Genius/parent/software.txt");
//夜光:2、我们选择流,选择inputstream
//因为我们之后要关闭,为了提升作用域,写下面一句代码
InputStream is = null;
try {
is = new FileInputStream(src);
//3、操作,读取,不断的读取,我们写一个缓冲数组
byte[] car = new byte[10];
int len = 0;//夜光:定义一个实际读取的大小
//循环读取
while(-1 != (is.read(car))){ //-1表示没有数据了~~
//输出,我们需要将字节数组转换成字符串
String info = new String(car,0,len);
System.out.println(info);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("文件不存在~~");
} catch (IOException e) {
e.printStackTrace();
System.out.println("读取文件失败~~");
}finally{
//4、夜光:第四步就是释放资源,挚友存在才需要释放嗯
try {
if(null != is){
is.close();
}
} catch (IOException e2) {
System.out.println("关闭文件输入流失败~~");
}
}
}
}
写入成功
package com.Genius.byteIO;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class Demo02 {
public static void main(String[] args) {
// 夜光:我们之后再写出去嗯~~1、建立联系,file对象,目的地
File dest = new File("E:/Genius/parent/test/software.txt");
//2、选择流
OutputStream os =null;
//我们以追加的方式来写下面一个代码~~
try {
os = new FileOutputStream(dest, true);
//我们来写一个操作~~
String str = "Genius keeps learning~~";
//下面我们需要写出去,这就要涉及到字符串转换成字节数组~~
byte[] data = str.getBytes();
os.write(data,0,data.length);
os.flush();//夜光:这里我们需要把这个强制刷新出去~~,因为相当于一个管道,我们需要把这个强制刷新出去
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("文件未找到~~");
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件写出失败~~");
}finally{
if( null != os){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
//夜光,最后一步:释放资源
System.out.println("释放资源失败~~");
}
}
}
}
}