81、java的IO操作-FileInputStream

来源:互联网 发布:淘宝服装拍摄报价 编辑:程序博客网 时间:2024/06/05 06:13
一、FileInputStream的构造方法1、FileInputStream(File file)2、FileInputStream(String name)二、读取数据的方式: 1、int read():一次读取一个字节 2、int read(byte[] b):一次读取一个字节数组三、 字节输入流操作步骤: 1、创建字节输入流对象 2、调用read()方法读取数据,并把数据显示在控制台 3、释放资源注意:输入流读取数据的时候,文件必须存在,不然会抛出异常     java.io.FileNotFoundException: a.txt (系统找不到指定的文件。)四、案例/* * 一次读取一个字节:int read() * 返回值其实是实际读取的字节个数。 */public class FileInputStreamDemo {public static void main(String[] args) throws IOException {// FileInputStream(String name)// FileInputStream fis = new FileInputStream("fis.txt");FileInputStream fis = new FileInputStream("FileOutputStreamDemo.java");// // 调用read()方法读取数据,并把数据显示在控制台// // 第一次读取// int by = fis.read();// System.out.println(by);// System.out.println((char) by);//// // 第二次读取// by = fis.read();// System.out.println(by);// System.out.println((char) by);//// // 第三次读取// by = fis.read();// System.out.println(by);// System.out.println((char) by);// // 我们发现代码的重复度很高,所以我们要用循环改进// // 而用循环,最麻烦的事情是如何控制循环判断条件呢?// // 第四次读取// by = fis.read();// System.out.println(by);// // 第五次读取// by = fis.read();// System.out.println(by);// //通过测试,我们知道如果你读取的数据是-1,就说明已经读取到文件的末尾了// 用循环改进// int by = fis.read();// while (by != -1) {// System.out.print((char) by);// by = fis.read();// }// 最终版代码int by = 0;// 读取,赋值,判断while ((by = fis.read()) != -1) {System.out.print((char) by);}// 释放资源fis.close();}}/* * 一次读取一个字节数组:int read(byte[] b) * 返回值其实是实际读取的字节个数。 */public class FileInputStreamDemo2 {public static void main(String[] args) throws IOException {// 创建字节输入流对象// FileInputStream fis = new FileInputStream("fis2.txt");FileInputStream fis = new FileInputStream("FileOutputStreamDemo.java");// 读取数据// 定义一个字节数组// 第一次读取// byte[] bys = new byte[5];// int len = fis.read(bys);// // System.out.println(len);// // System.out.println(new String(bys));// // System.out.println(new String(bys, 0, len));// System.out.print(new String(bys, 0, len));//// // 第二次读取// len = fis.read(bys);// // System.out.println(len);// // System.out.println(new String(bys));// // System.out.println(new String(bys, 0, len));// System.out.print(new String(bys, 0, len));//// // 第三次读取// len = fis.read(bys);// // System.out.println(len);// // System.out.println(new String(bys));// // System.out.println(new String(bys, 0, len));// System.out.print(new String(bys, 0, len));//// // 第四次读取// len = fis.read(bys);// // System.out.println(len);// // System.out.println(new String(bys, 0, len));// System.out.print(new String(bys, 0, len));// // 代码重复了,用循环改进// // 但是,我不知道结束条件// // len = fis.read(bys);// // System.out.println(len);// // len = fis.read(bys);// // System.out.println(len);// // 如果读取到的实际长度是-1,就说明没有数据了// byte[] bys = new byte[115]; // 0// int len = 0;// while ((len = fis.read(bys)) != -1) {// System.out.print(new String(bys, 0, len));// }// 最终版代码// 数组的长度一般是1024或者1024的整数倍byte[] bys = new byte[1024];int len = 0;while ((len = fis.read(bys)) != -1) {System.out.print(new String(bys, 0, len));}// 释放资源fis.close();}}

阅读全文
0 0