栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java使用I/O流读取文件内容的方法详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java使用I/O流读取文件内容的方法详解

本文实例讲述了Java使用I/O流读取文件内容的方法。分享给大家供大家参考,具体如下:

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

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

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

OutputStream的方法:

读取文件(代码):

package com.jredu.oopch11;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class Ch01 {
    
    public static void main(String[] args) {
 //InputStream:是一个抽象类
 // :是一个 转移符
 //表示磁盘路径的两种表示方式:1、\  2、/
 try {
     //从文件地址中读取内容到程序中
     //1、建立连接
     InputStream is = new FileInputStream("E:/iodemo/ch01.txt");
     //2、开始读取信息
         
     //方法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.oopch11;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;

public class Ch02 {
    
    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.oopch11;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;

public class Ch03 {
    
    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.oopch11;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
public class Ch04 {
    
    public static void main(String[] args) {
 // TODO Auto-generated method stub
 try {
     
     //包装流
     BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:/iodemo/ch04.txt"));
     //读取文件内容
     byte[] b = new byte[bis.available()];
     bis.read(b);
      
     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.oopch11;
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.oopch11;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Ch06 {
    
    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.oopch11;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.SequenceInputStream;

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.oopch11;
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算法相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/136189.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号