Java

字节型文件输入流(FileInputStream)
    读取文件数据
  1.包   

  java.lang.Object

    java.io.InputStream(带Stream的都是字节型)

      java.io.FileInputStream

  2.了解一下继承关系    InputStream类是字节型输入流的父类
  3.创建对象
     调用一个带File类型的构造方法
     调用一个带String类型的构造方法
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class TestInputStream {
    public static void main(String[] args){
        File file = new File("F:\JavaTest\aest.txt");
        try {
            FileInputStream fileInputStream = new FileInputStream(file);//必须抛出异常才可
        } catch (FileNotFoundException e) {//可以写成IOException
            e.printStackTrace();
        }
        //FileInputStream fileInputStream1 = new FileInputStream(new File("F:\JavaTest\Test.txt"));
        //FileInputStream fileInputStream2 = new FileInputStream("F:\JavaTest\Test.txt");
    }
}
  4.常用方法
    (1) int code = read(); 每次从流管道中读取一个字节   返回字节的code码
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TestInputStream {
    public static void main(String[] args){
        File file = new File("F:\JavaTest\Test.txt");
        try {
            FileInputStream fileInputStream = new FileInputStream(file);//必须抛出异常才可
            int code = fileInputStream.read();//返回code码 每次一个code码  必须抛出异常  如果读不到返回-1
            while(code!=-1){
                System.out.println((char)code);
                code = fileInputStream.read();//重新获取值, 否则一直输出一个
            }
        } catch (FileNotFoundException e) {//可以写成IOException
            e.printStackTrace();
        } catch (IOException e) {//read()方法抛出的异常
            e.printStackTrace();
        }
    }
}

输出结果:
a
b
c
d



e
f
g



h
i



j
     *(2)int count = read(byte[] )  每次从流管道中读取若干个字节  存入数组内  返回有效元素个数
      (3)int count = available();   返回流管道中还有多少缓存的字节数
      (4)skip(long n)   跳过几个字节  读取
     *(5)close() 将流管道关闭---必须要做  最好放在finally里  注意代码的健壮性  判断严谨
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TestInputStream {
    public static void main(String[] args){
        FileInputStream fileInputStream= null;//最好放在try外面 不然的话 finally中调用不到对象
        try {
            fileInputStream = new FileInputStream("F:\JavaTest\Test.txt");//必须抛出异常才可
            //同时将数据全部存入流道
            byte [] b = new byte[5];
            int value1 = fileInputStream.available();//返回 流道中 有效值个数  21
            System.out.println(value1);
            int count = fileInputStream.read(b);//将读取到的数据装入bytes数组中,返回读取到的有效字节的个数
            //流道数据被装入数组中, 流道数据减少
            System.out.println(count);
            System.out.println(fileInputStream.available());//16

            while(count!=-1){
                String value = new String(b,0,count);
                System.out.print(value);
                count = fileInputStream.read(b);//重新获取值, 否则一直输出一个
            }
        } catch (FileNotFoundException e) {//可以写成IOException
            e.printStackTrace();
        } catch (IOException e) {//read()方法抛出的异常
            e.printStackTrace();
        }finally {
            try {
                if(fileInputStream!=null){
                    fileInputStream.close();//必须关闭,关闭的是流道数据通道,不是file对象
                    System.out.println("
"+"通道关闭");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
输出结果:
21
5
16
abcdefg
hijklmn
opq
通道关闭
字节型文件输出流(FileOutputStream)
      将数据写入文件中
  1. 包

  java.lang.Object

    java.io.OutputStream

      java.io.FileOutputStream

  2.继承OutputStream,是所有字节型输出流的父类
  3.创建对象
     调用一个带File参数   还有File boolean重载
     调用一个带String参数   还有String boolean重载
  4.常用方法
     write(int code);  将给定code对应的字符写入文件   '='
     write(byte[])    将数组中的全部字节写入文件   getByte()
     flush(); 将管道内的字节推入(刷新)文件
     close(); 注意在finally中关闭
 
import java.io.FileOutputStream;
import java.io.IOException;

public class TestOutputStream {
    public static void main(String [] args){
        FileOutputStream fos = null;
        try {
            //原目录中无此文件
            //如果是输入的话,无此文件 运行会出现异常,如果是输出流,则不会出现,会自动帮我们创建这个文件
            //FileInputStream fis = new FileInputStream("F:\JavaTest\TestTest.txt");报错
            fos = new FileOutputStream("F:\JavaTest\TestTest.txt",true);
            /*
            *   加true,如果每次操作文件时,不会重新创建一个同名文件,然后覆盖原文件
            *   如果不加true,或者为false时,每次操作文件,会将源文件删除,重新创建一个新的文件,内容为新的操作的内容
            */
            String string = "长安十二时辰";
            byte[] bytes = string.getBytes();
            fos.write(bytes);
            fos.flush();//刷新  将管道中的字节 推入文件中  可不写,因为每次操作会默认自动执行此函数,但写上更好
            System.out.println("写入完毕");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(fos!=null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

输入结果:

 
原文地址:https://www.cnblogs.com/yyanghang/p/11225270.html