Java使用I/O流读取文件内容的方法详解
本文实例讲述了Java使用I/O流读取文件内容的方法。分享给大家供大家参考,具体如下:
要利用I/O流读取文件内容,首先要掌握InputStream的体系结构。
这个体系中FileInputStream和BufferedInputStream是一定要掌握的,因为使用的频率比较高。
InputStream的方法:InputStream位于java.io包下
OutputStream的方法:
读取文件(代码):
packagecom.jredu.oopch11;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
/**
*I/O流的概念:数据流向某个对象的数据序列,并且到达这个对象的过程。
*输入流:数据源数据流向计算机内存的过程
*输出流:把数据从程序流向目标数据源的过程
*@authorAdministrator
*
*/
publicclassCh01{
/**
*读取文件内容
*@paramargs
*/
publicstaticvoidmain(String[]args){
//InputStream:是一个抽象类
//\:是一个转移符
//表示磁盘路径的两种表示方式:1、\\2、/
try{
//从文件地址中读取内容到程序中
//1、建立连接
InputStreamis=newFileInputStream("E:/iodemo/ch01.txt");
//2、开始读取信息
/*
//方法1:一次只读一个
System.out.println(is.read());//读取的是字节型的:49
System.out.println((byte)is.read());//50
*/
//方法2:定义数组,循环读取
//先定义一个字节数组存放数据
byte[]b=newbyte[5];//把所有的数据读取到这个字节当中
//声明一个int存储每次读取到的数据
inti=0;
//定义一个记录索引的变量
intindex=0;
//循环读取每个数据
while((i=is.read())!=-1){//把读取的数据放到i中
b[index]=(byte)i;
index++;
}
//把字节数组转成字符串
System.out.println(newString(b));
//关闭流
is.close();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
//系统强制解决的问题:文件没有找到
e.printStackTrace();
}catch(IOExceptione){
//文件读写异常
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
packagecom.jredu.oopch11;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Arrays;
/**
*I/O流的概念:数据流向某个对象的数据序列,并且到达这个对象的过程。
*输入流:数据源数据流向计算机内存的过程
*输出流:把数据从程序流向目标数据源的过程
*@authorAdministrator
*
*/
publicclassCh02{
/**
*读取文件内容
*@paramargs
*/
publicstaticvoidmain(String[]args){
//InputStream:是一个抽象类
//\:是一个转移符
//表示磁盘路径的两种表示方式:1、\\2、/
try{
//从文件地址中读取内容到程序中
//1、建立连接
InputStreamis=newFileInputStream("E:/iodemo/ch01.txt");
//2、开始读取信息
//先定义一个字节数组存放数据
byte[]b=newbyte[5];//把所有的数据读取到这个字节当中
//完整的读取一个文件
is.read(b);
//read:返回的是读取的文件大小
//最大不超过b.length,返回实际读取的字节个数
System.out.println(Arrays.toString(b));//读取的是字节数组
//把字节数组转成字符串
System.out.println(newString(b));
//关闭流
is.close();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
//系统强制解决的问题:文件没有找到
e.printStackTrace();
}catch(IOExceptione){
//文件读写异常
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
packagecom.jredu.oopch11;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Arrays;
/**
*I/O流的概念:数据流向某个对象的数据序列,并且到达这个对象的过程。
*输入流:数据源数据流向计算机内存的过程
*输出流:把数据从程序流向目标数据源的过程
*@authorAdministrator
*
*/
publicclassCh03{
/**
*读取文件内容
*@paramargs
*/
publicstaticvoidmain(String[]args){
//InputStream:是一个抽象类
//\:是一个转移符
//表示磁盘路径的两种表示方式:1、\\2、/
try{
//从文件地址中读取内容到程序中
//1、建立连接
InputStreamis=newFileInputStream("E:/iodemo/ch01.txt");
//2、开始读取信息
//先定义一个字节数组存放数据
byte[]b=newbyte[is.available()];//把所有的数据读取到这个字节当中
//is.available():返回文件的大小
//while(is.available()==0);//不等于0时才停止循环
//完整的读取一个文件
intoff=0;
intle=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(newString(b));
//关闭流
is.close();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
//系统强制解决的问题:文件没有找到
e.printStackTrace();
}catch(IOExceptione){
//文件读写异常
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
packagecom.jredu.oopch11;
importjava.io.BufferedInputStream;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.util.Arrays;
publicclassCh04{
/**
*读取中文字符的文件
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
try{
/*FileInputStreamfis=newFileInputStream("E:/iodemo/ch04.txt");
//包装流
BufferedInputStreambis=newBufferedInputStream(fis);*/
//包装流
BufferedInputStreambis=newBufferedInputStream(newFileInputStream("E:/iodemo/ch04.txt"));
//读取文件内容
byte[]b=newbyte[bis.available()];
bis.read(b);
/*char[]c=newchar[b.length];
for(inti=0;i
packagecom.jredu.oopch11;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
publicclassCh05{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
try{
//读取文件
FileInputStreamfis=newFileInputStream("E:/iodemo/ch01.txt");
//fis.available():文件的长度
byte[]b=newbyte[fis.available()];
//skip:跳过n个字节后再开始读取
fis.skip(5);//跳过前5个
fis.read(b);
System.out.println(newString(b));
fis.close();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
packagecom.jredu.oopch11;
importjava.io.BufferedInputStream;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
publicclassCh06{
/**
*读取过程暂停,给当前做一个标记,下一次从标记位置开始读取
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
//读取过程中暂停
//给当前做一个标记
//下一次从标记位置开始读取
try{
BufferedInputStreambis=newBufferedInputStream(newFileInputStream("E:/iodemo/ch06.txt"));
byte[]b=newbyte[bis.available()];
//bis.read(b,0,b.length/2);
//设置断点
bis.mark(bis.read(b,0,b.length/2));//位置就是读取的长度
System.out.println(newString(b));
System.out.println("暂停读取....");
Thread.sleep(2000);//休眠2s
//休眠后继续读
System.out.println("继续读取...");
//reset:将当前复位的位置设置成上次调用mark标记的位置
bis.reset();
bis.read(b);
System.out.println(newString(b));
bis.close();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
packagecom.jredu.oopch11;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.SequenceInputStream;
/**
*序列流(集合流)
*把n个流合并在一起读取
*@authorAdministrator
*
*/
publicclassCh07{
publicstaticvoidmain(String[]args){
try{
//第一个文件流
FileInputStreamfis1=newFileInputStream("E:/iodemo/ch01.txt");
//第二个文件流
FileInputStreamfis2=newFileInputStream("E:/iodemo/ch04.txt");
//合并到序列流中
SequenceInputStreamsis=newSequenceInputStream(fis1,fis2);
//方式1
////临时存放数据的数组
//intlen=fis1.available()+fis2.available();
//byte[]b=newbyte[2*len+1];
////把每一次读取到的临时数据存放如sb中
////StringBuffersb=newStringBuffer();
////一次性读取所有的内容
//intoff=0;
//inti=0;
//while((i=sis.read(b,off,len))!=-1){
////sb.append();
//off+=i;
//}
//System.out.println(newString(b));
//方式2
byte[]b=newbyte[fis1.available()];
//StringBuffersb=newStringBuffer();
//inti=0;
while(sis.read(b)!=-1){
System.out.println(newString(b));
//sb.append(newString(b));
}
//System.out.println(sb.toString());
sis.close();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
packagecom.jredu.oopch11;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.SequenceInputStream;
importjava.util.Vector;
publicclassCh08{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
try{
//三个文件流
FileInputStreamfis1=newFileInputStream("E:/iodemo/a.txt");
FileInputStreamfis2=newFileInputStream("E:/iodemo/b.txt");
FileInputStreamfis3=newFileInputStream("E:/iodemo/c.txt");
//把三个流添加到集合中
Vectorvector=newVector<>();
vector.add(fis1);
vector.add(fis2);
vector.add(fis3);
//vector.elements();//方法返回的是Enumeration
//合并到一个序列流中
SequenceInputStreamsis=newSequenceInputStream(vector.elements());
byte[]b=newbyte[fis1.available()+fis2.available()+fis3.available()];
//读取
intoff=0;
//vector.get(i).available():一个文件的长度
for(inti=0;i
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。