I/O流,就是用来读写数据的,也称为输入,输出流
目录
公司主营业务:网站建设、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出长宁免费做网站回馈大家。1.I/O流的简介
2.I/O流的分类
3.I/O流体系
4.文件字节输入流 FileInputStream--读取文件数据
5.文件字节输出流OutPutStream--写数据到文件
6.两种资源释放操作
7.字符输入流Reader
8.字符输出流Write
9.字节流字符流如何选择
I表示input,把硬盘文件中的数据读入到内存中的过程,称之为输入,负责读。
O表示output,把内存的数据写入硬盘的过程,为输出,负责写。
2.I/O流的分类3.I/O流体系1.按照流的方向:可以分为输入流,输出流
2.按照流中数据的最小单位:分为字符流和字节流
字符流 | 字节流 | ||
Writer | Reader | InputStream | OutputStream |
字符输入 | 字符输出 | 字节输入 | 字节输出 |
I/O流体系因为是抽象,所以不能直接用,需要用他们的子类。
4.文件字节输入流 FileInputStream--读取文件数据FileInputStream是字节输入流inputStream的子类
FileInputStream的作用:以内存为基准,把磁盘文件中的数据以字节的形式读取到内存中去。
使用
InputStream is = new FileInputStream("文件路径");
方法
read():每次读取一个字节,读取完毕后返回-1;
read(byte[] buffer):每次读取一个数组,没有数组可读返回-1。
当读取中文的时候,可能会出现乱码。这时候该如何解决呢?
解决:定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。
File f=new File("文件路经");
InputStream is=new FileInputStream(f);
byte[] buffer=new byte[(int)f.length()];
int len= is.read(buffer);
System.out.println("读取了"+len);
System.out.println("文件大小"+f.length());
System.out.println(new String(buffer));
在java也提供了相应的方法 ---readAllBytes()
byte[] buffer= is.readAllBytes();
System.out.println(new String(buffer));
5.文件字节输出流OutPutStream--写数据到文件public static void main(String[] args) throws Exception {
OutputStream outputStream =new FileOutputStream("D:\\java\\itheima\\file-io-app\\src\\out01.txt");
//向新创建的文件中添加数据
outputStream.write('a');
outputStream.write(97);
//outputStream.write('兹');//汉字会出现乱码
//向文件中添加汉字内容
byte[] b="加油年轻人".getBytes();
outputStream.write(b);
outputStream.flush();//刷新数据,可以继续使用
outputStream.close();//释放资源,包含刷新数据,close后不能使用
}
文件输出
6.两种资源释放操作1.手动释放
try{
可能会出现异常的代码
}
catch(异常类名 变量名 ){
异常执行的操作
}
finally{
执行资源释放操作
}
2.自动释放
自动释放有两种,分别是JDK7和JDK9提供的。
这是JDK7,这种比较常用。
try(定义流对象){
可能会出现异常的代码
}
catch{
异常处理代码
}
7.字符输入流ReaderJDK9:
定义输入流对象
定义输出流对象
try(输入流对象;输出流对象){
可能会出现异常的代码
}
catch{
异常处理代码
}
更方便的读取汉字
Reader re=new FileReader("D:\\java\\itheima\\file-io-app\\src\\data02.txt");
int code;
while ((code=re.read()) != -1){//当返回-1的时候不在读取
System.out.print((char) code);
}
8.字符输出流Write向文件中写入数据
Writer re=new FileWriter("目标文件");
re.write('a');
re.write("dadadd");
char[] a="我爱学习".toCharArray();
re.write(a,0,3);
re.close();
9.字节流字符流如何选择字节流适合做一切文件数据的拷贝(音视频,文本)
字节流不适合读取中文内容
字符流适合做文本文件的操作
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧