java IO流 之 输入流 InputString()的使用
作者:Bigerf 发布时间:2023-08-22 07:44:31
标签: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\\joke\\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\\joke\\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\\joke\\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\\joke\\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()的使用,希望对大家有所帮助
来源:http://www.cnblogs.com/bigerf/archive/2016/12/06/6136557.html


猜你喜欢
- Fragment的主要意义就是提供与Activity绑定的生命周期回调。Fragment不一定要向Activity的视图层级中添加View.
- 干Java这么久,一直在做WEB相关的项目,一些基础类差不多都已经忘记。经常想得捡起,但总是因为一些原因,不能如愿。其实不是没有时间,只是有
- 使用ExecutorService来停止线程服务之前的文章中我们提到了ExecutorService可以使用shutdown和shutdow
- 我们在代码中经常使用using保障非托管资源的释放 static void Main(string[] args){
- 用VS2010 + OpenCV 2.4.9 实现简单人脸识别,供大家参考,具体内容如下首先放效果图(为了防止辣眼睛,后期处理了下):首先声
- 本文实例为大家分享了unity实现UI元素跟随3D物体的具体代码,供大家参考,具体内容如下在Canvas不同的渲染模式(RenderMode
- C++ 线程(串行 并行 同步 异步)详解看了很多关于这类的文章,一直没有总结。不总结的话就会一直糊里糊涂,以下描述都是自己理解
- 网站中为了防止恶意获取验证短信、验证邮箱,都会在点击获取验证码的按钮上做个倒计时的效果,如何实现这个效果,具体内容如下效果图: 代
- 常用的对数组进行的操作1、求数组中最大值,最小值思路:假设下标为0的元素是最大值,遍历数组,依次跟max进行比较,如果有元素比这个max还大
- 本文实例讲述了C#实现两接口中同名方法。分享给大家供大家参考。具体分析如下:对于一个类实现两个接口,而这两个接口又有同名方法,C#中的处理方
- Mybatis-plus官网地址:https://baomidou.com/配置mysql在配置文件连接mysqlspring.dataso
- 罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
- 这篇文章主要介绍了Spring如何使用注解的方式创建bean,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 当我们的idea无法自动下在所需的Maven依赖时,我们可以到Maven的远程仓库中下载所需要的jar包,然后添加到我们的本地仓库中。1.首
- Android短信高效备份这篇文章,承接上一篇。使用高效的方式备份短信——xml序列化器。存储短信,要以对象的方式存储。首先创建javabe
- 本文实现springboot的多文件上传,首先创建一个springboot项目,添加spring-boot-starter-web依赖。然后
- 前言使用SpringBoot来开发项目相对于传统模式,要快速优雅许多,相信目前国内绝大部分web项目的开发还没有使用SpringBoot来做
- 基础铺垫在java中,关于json的lib有很多,比如jackjson、fastjson、gson等等,本人都用过,但是对于我等只需要让ja
- 数学原理:  
- 一、栈(Stack)1、什么是栈?栈其实就是一种数据结构 - 先进后出(先入栈的数据后出来,最先入栈的数据会被压入栈底)什么是java虚拟机