Java InputStream从文件读取示例
来源:互联网 发布:网络语青铜是什么意思 编辑:程序博客网 时间:2024/06/05 19:15
一,知识点
1,InputStream是输入流的抽象基类,定义了输入流应该实现的方法。
2,很重要的一个方法是read(byte[] buffer,int offset,int length)
,三个参数分别代表读到哪,从当前位置开始读取的偏移,读取长度。
3,一定要注意编码,比如UTF-8中中文一般占3个字节,数字和英文字母占一个字节,其他编码就不一定了,如果读取中文时length设置为1,那么显示读取中文的内容是会显示乱码。
4,流是一种连接,是占用资源的,使用后一定要关闭连接释放资源,一种方式是在finally中执行.close()方法确保关闭方法执行,还有一种直接利用try with resource的技术,需要java1.7以上版本支持。
5,本篇以读取文件为例介绍InputStream,读取其他对象基本上是一样的,因为都是InputStream的子类。
二,代码示例
//工具类package com.maoge.stream;import java.io.File;public class StreamUtils { //用于定义每次读取的长度 public static final int BUFFER_LENGTH=512; //文件对象 public static File FILE_FOR_READ; static{ FILE_FOR_READ=new File("C:\\test.txt"); }}
//示例类package com.maoge.stream;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;public class InputStreamDemo { //测试入口 public static void main(String[] args) { //从文件读取内容 readFromFile(); //另一种异常捕获方式 readWithTryResources(); } public static void readFromFile(){ StringBuilder sb=new StringBuilder(); InputStream in=null; try{ in=new FileInputStream(StreamUtils.FILE_FOR_READ); byte buffer[]=new byte[StreamUtils.BUFFER_LENGTH]; while(in.read(buffer,0,StreamUtils.BUFFER_LENGTH)!=-1){//-1表示读取结束 sb.append(new String(buffer)); System.out.println("部分:"+new String(buffer)); } System.out.println("全文:"+sb.toString()); }catch(Exception ex){ System.out.println(ex.toString()); }finally{//不管是否出现异常,都要确保关闭以释放资源 try{ in.close(); }catch(IOException ioEx){ System.out.println(ioEx.toString()); } } } public static void readWithTryResources(){ StringBuilder sb=new StringBuilder(); try(InputStream in=new FileInputStream(StreamUtils.FILE_FOR_READ)){//自动关闭,注意该用法需要Java1.7以上版本才支持 byte buffer[]=new byte[StreamUtils.BUFFER_LENGTH]; while(in.read(buffer,0,StreamUtils.BUFFER_LENGTH)!=-1){ sb.append(new String(buffer)); System.out.println("部分:"+new String(buffer)); } System.out.println("全文:"+sb.toString()); }catch(Exception ex){ System.out.println(ex.toString()); } }}
三,运行结果
1,当BUFFER_LENGTH=10时,可以看到第三个中文出现乱码,你懂得。
部分:这是�部分:��个完�部分:�的测试部分:本文1234部分:abcd。234全文:这是���个完��的测试本文1234abcd。234部分:这是�部分:��个完�部分:�的测试部分:本文1234部分:abcd。234全文:这是���个完��的测试本文1234abcd。234
2,当BUFFER_LENGTH=512时,执行结果比较完美。
阅读全文
0 0
- Java InputStream从文件读取示例
- 网络,file 从InputStream读取byte[]示例
- JAVA InputStream读取文件数据
- InputStream 读取文件//从硬盘到内存
- java inputstream读取文件中的数据
- java文件读取示例
- InputStream读取文件乱码
- 使用Inputstream读取文件
- 使用Inputstream读取文件
- 使用InputStream读取文件
- 使用Inputstream读取文件
- 使用Inputstream读取文件
- inputStream读取文件
- 使用Inputstream读取文件
- 使用Inputstream读取文件
- java inputstream 读取数据
- java 读取 InputStream
- java InputStream读取数据
- phpcms v9 站群开发问题汇总
- JNI编程 入门级
- 矩阵A+B(矩阵相加)
- datatable excelHtml5 自定义列格式(百分比保留两位小数)
- 线性链表的查找插入删除算法
- Java InputStream从文件读取示例
- 北京新闻爬虫-final
- maven 笔记-maven安装
- Transfer water HDU
- Air Raid POJ1422 & HDU1151 最小路径覆盖
- HTML入门(下)
- Markdown 流程图
- mysql与oracle导出导入数据库的命令
- vue2.0路由的配置