千家信息网

Java怎么使用I/O流读取文件内容

发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要介绍了Java怎么使用I/O流读取文件内容,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:要利用I/O流读取文件内
千家信息网最后更新 2025年11月06日Java怎么使用I/O流读取文件内容

这篇文章主要介绍了Java怎么使用I/O流读取文件内容,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体如下:

要利用I/O流读取文件内容,首先要掌握InputStream的体系结构。

这个体系中FileInputStream和BufferedInputStream是一定要掌握的,因为使用的频率比较高。

InputStream的方法:InputStream位于java.io包下

OutputStream的方法:

读取文件(代码):

package com.jredu.oopch21;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;/** * I/O流的概念:数据流向某个对象的数据序列,并且到达这个对象的过程。 * 输入流:数据源数据流向计算机内存的过程 * 输出流:把数据从程序流向目标数据源的过程 * @author Administrator * */public class Ch01 { /** * 读取文件内容 * @param args */ public static void main(String[] args) { //InputStream:是一个抽象类 // \:是一个 转移符 //表示磁盘路径的两种表示方式:1、\\ 2、/ try { //从文件地址中读取内容到程序中 //1、建立连接 InputStream is = new FileInputStream("E:/iodemo/ch01.txt"); //2、开始读取信息 /* //方法1:一次只读一个 System.out.println(is.read());//读取的是字节型的:49 System.out.println((byte)is.read());//50 */ //方法2:定义数组,循环读取 //先定义一个字节数组存放数据 byte[] b = new byte[5];//把所有的数据读取到这个字节当中 //声明一个int存储每次读取到的数据 int i = 0; //定义一个记录索引的变量 int index = 0; //循环读取每个数据 while((i=is.read())!=-1){//把读取的数据放到i中 b[index]=(byte) i; index++; } //把字节数组转成字符串 System.out.println(new String(b)); //关闭流 is.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block //系统强制解决的问题:文件没有找到 e.printStackTrace(); } catch (IOException e) { //文件读写异常 // TODO Auto-generated catch block e.printStackTrace(); } }}

package com.jredu.oopch21;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.Arrays;/** * I/O流的概念:数据流向某个对象的数据序列,并且到达这个对象的过程。 * 输入流:数据源数据流向计算机内存的过程 * 输出流:把数据从程序流向目标数据源的过程 * @author Administrator * */public class Ch02 { /** * 读取文件内容 * @param args */ public static void main(String[] args) { //InputStream:是一个抽象类 // \:是一个 转移符 //表示磁盘路径的两种表示方式:1、\\ 2、/ try { //从文件地址中读取内容到程序中 //1、建立连接 InputStream is = new FileInputStream("E:/iodemo/ch01.txt"); //2、开始读取信息 //先定义一个字节数组存放数据 byte[] b = new byte[5];//把所有的数据读取到这个字节当中 //完整的读取一个文件 is.read(b); //read:返回的是读取的文件大小 //最大不超过b.length,返回实际读取的字节个数 System.out.println(Arrays.toString(b));//读取的是字节数组 //把字节数组转成字符串 System.out.println(new String(b)); //关闭流 is.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block //系统强制解决的问题:文件没有找到 e.printStackTrace(); } catch (IOException e) { //文件读写异常 // TODO Auto-generated catch block e.printStackTrace(); } }}

package com.jredu.oopch21;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.Arrays;/** * I/O流的概念:数据流向某个对象的数据序列,并且到达这个对象的过程。 * 输入流:数据源数据流向计算机内存的过程 * 输出流:把数据从程序流向目标数据源的过程 * @author Administrator * */public class Ch03 { /** * 读取文件内容 * @param args */ public static void main(String[] args) { //InputStream:是一个抽象类 // \:是一个 转移符 //表示磁盘路径的两种表示方式:1、\\ 2、/ try { //从文件地址中读取内容到程序中 //1、建立连接 InputStream is = new FileInputStream("E:/iodemo/ch01.txt"); //2、开始读取信息 //先定义一个字节数组存放数据 byte[] b = new byte[is.available()];//把所有的数据读取到这个字节当中 //is.available():返回文件的大小 // while(is.available()==0);//不等于0时才停止循环 //完整的读取一个文件 int off = 0; int le = 2; while(is.read(b, off, 2)!=-1){ off+=1; } is.read(b,off,2); //read:返回的是读取的文件大小 //最大不超过b.length,返回实际读取的字节个数 System.out.println(Arrays.toString(b));//读取的是字节数组 //把字节数组转成字符串 System.out.println(new String(b)); //关闭流 is.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block //系统强制解决的问题:文件没有找到 e.printStackTrace(); } catch (IOException e) { //文件读写异常 // TODO Auto-generated catch block e.printStackTrace(); } }}

package com.jredu.oopch21;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Arrays;public class Ch04 { /** * 读取中文字符的文件 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { /*FileInputStream fis = new FileInputStream("E:/iodemo/ch04.txt"); //包装流 BufferedInputStream bis = new BufferedInputStream(fis);*/ //包装流 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:/iodemo/ch04.txt")); //读取文件内容 byte[] b = new byte[bis.available()]; bis.read(b); /*char[] c = new char[b.length]; for (int i = 0; i < c.length; i++) { c[i]=(char) b[i]; } System.out.println(Arrays.toString(c));//乱码 */ System.out.println(Arrays.toString(b));//得到的是字节 //String(byte[])把字节数组转成字符串 System.out.println(new String(b));//可以得到中文 bis.close();//关闭流(关闭bis就可以了) } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}

package com.jredu.oopch21;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class Ch05 { public static void main(String[] args) { // TODO Auto-generated method stub try { //读取文件 FileInputStream fis = new FileInputStream("E:/iodemo/ch01.txt"); //fis.available():文件的长度 byte[] b=new byte[fis.available()]; //skip:跳过n个字节后再开始读取 fis.skip(5);//跳过前5个 fis.read(b); System.out.println(new String(b)); fis.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}

package com.jredu.oopch21;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class Ch06 { /** * 读取过程暂停,给当前做一个标记,下一次从标记位置开始读取 * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //读取过程中暂停 //给当前做一个标记 //下一次从标记位置开始读取 try { BufferedInputStream bis= new BufferedInputStream(new FileInputStream("E:/iodemo/ch06.txt")); byte[] b = new byte[bis.available()]; // bis.read(b, 0, b.length/2); //设置断点 bis.mark(bis.read(b, 0, b.length/2));//位置就是读取的长度 System.out.println(new String(b)); System.out.println("暂停读取...."); Thread.sleep(2000);//休眠2s //休眠后继续读 System.out.println("继续读取..."); //reset:将当前复位的位置设置成上次调用mark标记的位置 bis.reset(); bis.read(b); System.out.println(new String(b)); bis.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}

package com.jredu.oopch21;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.SequenceInputStream;/** * 序列流(集合流) * 把n个流合并在一起读取 * @author Administrator * */public class Ch07 { public static void main(String[] args) { try { //第一个文件流 FileInputStream fis1=new FileInputStream("E:/iodemo/ch01.txt"); //第二个文件流 FileInputStream fis2=new FileInputStream("E:/iodemo/ch04.txt"); //合并到序列流中 SequenceInputStream sis=new SequenceInputStream(fis1, fis2); //方式1// //临时存放数据的数组// int len =fis1.available()+fis2.available();// byte[] b=new byte[2*len+1];// //把每一次读取到的临时数据存放如sb中//// StringBuffer sb=new StringBuffer();// //一次性读取所有的内容// int off=0;// int i=0;// while((i=sis.read(b,off,len))!=-1) { //// sb.append();// off+=i;// }// System.out.println(new String(b)); //方式2 byte[] b=new byte[fis1.available()];// StringBuffer sb=new StringBuffer();// int i=0; while(sis.read(b)!=-1) { System.out.println(new String(b));// sb.append(new String(b)); }// System.out.println(sb.toString()); sis.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}

package com.jredu.oopch21;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.SequenceInputStream;import java.util.Vector;public class Ch08 { public static void main(String[] args) { // TODO Auto-generated method stub try { //三个文件流 FileInputStream fis1 = new FileInputStream("E:/iodemo/a.txt"); FileInputStream fis2 = new FileInputStream("E:/iodemo/b.txt"); FileInputStream fis3 = new FileInputStream("E:/iodemo/c.txt"); //把三个流添加到集合中 Vector vector = new Vector<>(); vector.add(fis1); vector.add(fis2); vector.add(fis3); // vector.elements(); //方法返回的是Enumeration //合并到一个序列流中 SequenceInputStream sis = new SequenceInputStream(vector.elements()); byte[] b = new byte[fis1.available()+fis2.available()+fis3.available()]; //读取 int off=0; //vector.get(i).available():一个文件的长度 for (int i = 0; i < vector.size(); i++) { //off:数组当中存放数据的起始下标的位置 off+=sis.read(b, off, vector.get(i).available());//每次读取一个文件的长度 } System.out.println(new String(b)); sis.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}

感谢你能够认真阅读完这篇文章,希望小编分享的"Java怎么使用I/O流读取文件内容"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

文件 数据 字节 数组 内容 过程 位置 对象 序列 数据源 程序 字符 方式 方法 标记 字符串 篇文章 长度 信息 内存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器性能监控的优势有哪些 数据库第三方审计系统 cnki期刊全文数据库检索年限 独立服务器租用安全吗 宝山区网络技术开发业务流程 铁路网络安全采取的措施是 戴尔服务器配什么显卡 软件开发人员晋升面评 看门狗2一直提示连接不到服务器 戴尔刀片服务器管理密码 山西软件开发价格服务标准 海南储存服务器虚拟主机 网络安全 息息相关 无法连接服务器代码1-1啥意思 网络安全专业在全国的认可度 报网络技术培训班 我的世界精灵宝可梦服务器qq号 地方网络技术培训多少钱 童趣朗读软件开发 软件开发公司运营成本 150虎卫传说服务器端 锦州盘古网络技术 服务器安全软件哪个好 网络技术的发展及其影响 网络安全十种准则 襄阳市国家网络安全宣传周 网络安全和安全工程哪个好 阿里云方舟服务器管理器 软件开发效率提高反思总结 衢州工业软件开发工具
0