java IO流 之 字节输入流 InputString()
学习java的重点之一:InputStream 字节输入流的使用
(1)FileInputstream: 子类,读取数据的通道
使用步骤:
1.获取目标文件:new File()
2.建立通道:new FileInputString()
3.读取数据:read()
4.释放资源:close()
- //一些默认要导入的包
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- public static void main(String[] args) throws IOException {
- // TODO Auto-generated method stub
- //分别调用方法查看效果
- test1();
- System.out.println("-------------------------------------------");
- test2();
- System.out.println("-------------------------------------------");
- test3();
- System.out.println("-------------------------------------------");
- test4();
- }
(2)读取数据的三种方式
1.直接读取 (一次只能一个字节)
int date = fileInputStream.read();
char date3 = (char)fileInputStream.read();
- //方式一 直接打印
- public static void test1() throws IOException{
- //(1)获取目标文件路径
- File file = new File("C:\\Users\\bg\\Desktop\\Demo1.java");
- //(2)根据目标文件路径 建立通道: new FileInputStream(file)
- FileInputStream fileInputStream = new FileInputStream(file);
- //(3)读取数据 :read();
- int date = fileInputStream.read();//这里是int类型
- int date2 = fileInputStream.read();//
- char date3 = (char)fileInputStream.read(); //以char类型显示
- System.out.println(date+"\\"+date2+"\\"+date3);
- //(4)释放资源
- fileInputStream.close();
- }
2.单独使用for循环(效率低)
for(int i = 0; i < file.length();i++){
System.out.print((char)fileInputStream.read());
}
- //方式二 循环遍历
- public static void test2() throws IOException{
- //通过时间测试效率
- long startTime = System.currentTimeMillis();
- File file = new File("C:\\Users\\bg\\Desktop\\Demo1.java");
- FileInputStream fileInputStream = new FileInputStream(file);
- //for循环
- for(int i = 0; i < file.length();i++){
- System.out.print((char)fileInputStream.read());
- }
- fileInputStream.close();
- long endTime = System.currentTimeMillis();
- System.out.println("读取文件所花时间:"+(endTime-startTime));
- }
3.Byte[ ] 缓冲区(只能读取指定的字节数不能读取一个完整的文件)
byte[] bt = new byte[1024];
int count = fileInputStream.read(bt);
System.out.println(new String (bt,0,count));
- //方式三 创建缓冲区(只能读取制定的大小,不能读取一个完整的文件)
- public static void test3() throws IOException{
- File file = new File("C:\\Users\\bg\\Desktop\\Demo1.java");
- FileInputStream fileInputStream = new FileInputStream(file);
- //创建缓冲区,加快读取数据,确定要读取的字节大小
- byte[] bt = new byte[1024];
- //read() 读取字节
- int count = fileInputStream.read(bt);
- System.out.println(count); //显示读取到的字节数
- System.out.println(new String (bt,0,count));//将字节转为字符串显示
- fileInputStream.close();
- }
4.缓冲区和循环结合。缓冲区一般设置为1024的倍数。理论上设置的缓冲区越大,读取效率越高
byte[] bt = new byte[1024];
int count = 0;
while((count = fileInputStream.read(bt)) != -1){
System.out.println(new String (bt,0,count));
}
- //方式四 循环与缓冲区结合(效率高)
- public static void test4() throws IOException{
- //通过时间测试效率
- long startTime = System.currentTimeMillis();
- File file = new File("C:\\Users\\bg\\Desktop\\Demo1.java");
- FileInputStream fileInputStream = new FileInputStream(file);
- //缓冲区一般设置为1024的倍数。理论上设置的缓冲区越大,读取效率越高
- byte[] bt = new byte[1024];
- int count = 0;
- //read返回 -1 时,证明已经遍历完
- while((count = fileInputStream.read(bt)) != -1){
- //字符串型显示(从bt中的第0个字节开始遍历count个长度)
- System.out.println(new String (bt,0,count));
- }
- fileInputStream.close();
- long endTime = System.currentTimeMillis();
- System.out.println("读取文件所花时间:"+(endTime-startTime));
- }
陌陌说: 在以上,对比第二个和第四个方法,会发现方法四的效率是比较高的,所以推荐使用的四个方法 在这里我们是直接抛出异常,除了抛出之外我们还可以使用 try{ }cater{ }finally{ } 的方式来处理异常 |
java IO流 之 字节输入流 InputString()的更多相关文章
- 【java】io流之字节输入流:java.io.InputStream类及子类java.io.FileInputStream
package 文件操作; import java.io.File; import java.io.FileInputStream; import java.io.IOException; impor ...
- java IO流 之 字节输出流 OutputString()
Java学习重点之一:OutputStream 字节输出流的使用 FileOutPutStream:子类,写出数据的通道 步骤: 1.获取目标文件 2.创建通道(如果原来没有目标文件,则会自动创建一个 ...
- java IO流 总结
[-] 1什么是IO 2数据流的基本概念 1 数据流 2 输入流Input Stream 3 输出流 数据流分类 3 标准IO 命令行参数 标准输入输出数据流 4javaIO层次体系结构 5 非流式 ...
- 学习笔记-java IO流总结 转载
1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...
- Java:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
- java IO流详解
流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- Java IO流学习总结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- Java IO流题库
一. 填空题 Java IO流可以分为 节点流 和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数 ...
- Java IO流总结
Java IO流分类以及主要使用方式如下: IO流 |--字节流 |--字节输入流 InputStream: int read();//一次读取一个字节 int read(byte[] bys);// ...
随机推荐
- Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)
题意: 线段树做法 分析: 因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化.比线段树快了12ms~ 代码: #include<cstdio> #include< ...
- Maximum Product Subarray(最大连续乘积子序列)
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- HTML学习之Flex 布局
一.Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为 Flex 布局. .box ...
- hibernate_Criteria_分页_去重
触发原因:实体类间存在一对多关系,并且在一这方加载多的时候用的加载模式是eager. 解决方法:1.非分页:criteria.setResultTransformer(Criteria.DISTINC ...
- eclipse bug之No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
解决办法: 1.eclipse菜单 - Window - Preferences- Java - Installed JREs 将配置的JRE定位到JDK,例如JRE home:D:\Program ...
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场 C
偶尔碰到这题,简单数位DP题,然而我已生疏了…… 这次算是重新想到的,看来对DP的理解有增进了…… dp[i][j][k],表示前i为,mod为j,是否出现2.3.5的剩下的数位可组成的数字.答案就是 ...
- 微信小程序 wafer2框架摘要
微信小程序 wafer2框架摘要 帮助文档:https://github.com/tencentyun/wafer2-startup/wiki 使用了knex.js进行数据库交互,使用了koa.js进 ...
- 003 rip
r0#config t Enter configuration commands, one per line. End with CNTL/Z. r0(config)#router rip r0(c ...
- ios之UILabel实现文本自适应方法
UILabel实现文本自适应方法(ios7) - (void)initUserInterface { UILabel *label = [[UILabel alloc]init]; label.num ...
- java poi excel导入模板设置下拉框
import org.apache.poi.hssf.usermodel.DVConstraint; import org.apache.poi.hssf.usermodel.HSSFCell; im ...