zoukankan      html  css  js  c++  java
  • 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();
                    }
                }
            }
        }
    }

    输入结果:

     
  • 相关阅读:
    51.N皇后问题
    Record -「CSP-S 2020」赛后总结
    Solution -「洛谷 P4451」「国家集训队」整数的 lqp 拆分
    Solution -「洛谷 P5048」「YunoOI 2019 模拟赛」Yuno loves sqrt technology III
    Solution -「洛谷 P5355」「YunoOI 2017」由乃的玉米田
    Solution -「洛谷 P5610」「YunoOI 2013」大学
    Solution -「洛谷 P5046」「YunoOI 2019 模拟赛」Yuno loves sqrt technology I
    Solution -「洛谷 P5072」「YunoOI 2015」盼君勿忘
    Solution -「洛谷 P4688」「YunoOI 2016」掉进兔子洞
    软件无痕清除目录
  • 原文地址:https://www.cnblogs.com/yyanghang/p/11225270.html
Copyright © 2011-2022 走看看