文件操作(与文件相关)相关笔记

发布时间:2024年01月11日

1.FileInputStream

? ? ? ? 1.构造方法

? ? ? ? ? ? ? ? new FileInputStream(String);

? ? ? ? ? ? ? ? 意思是创建一个对象,让这个对象指向某个文件,然后对这个文件进行读取操作,如果这个文件不存在

? ? ? ? 2.读取文件

? ? ? ? ? ? ? ? 读取文件使用read()方法;

? ? ? ? ? ? ? ? 如果每次读取一个字节,那么read方法返回的是这个字节的内容,也就是一个ascII码值,当没有其他字节的时候会返回-1

? ? ? ? ? ? ? ? 如果每次读取多个字节,需要首先定义一个byte数组a,然后让这个数组作为read的形参,此时read函数返回的是这个数组的长度,如果没有其他字节了,就会返回-1

? ? ? ? ? ? ? ?示例:

//每次读取一个字节
   
     public static void readOne(String name){
        //FileInputStream,打印ascII码
        //假设文件当中的内容是abcdefg,这些字符每个字符一个字节,如果是汉字,每个字三个字节
        FileInputStream a = null;
        try{
            a = new FileInputStream(name);
            int result;
            while((result = a.read())!=-1){
                System.out.println(result);
            }//所以每次会打印一个字节的ascII码
        }catch(FileNotFoundException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();;
        }finally{
            try{
                if(a!=null) {
                    a.close();
                }
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }






//每次读取多个字节

    public static void readMore(String name){
        //FileInputStream
        //假设文件当中的内容是abcdefg,这些字符每个字符一个字节,如果是汉字,每个字三个字节
        FileInputStream a = null;
        try{
            a = new FileInputStream(name);
            byte num[] = new byte[3];//假设每次读取三个字节
            int result;
            while((result = a.read(num))!=-1){//他会把这个获取到的字节数赋值给result
                //可以把数组直接转成字符串来打印
                String temp = new String(num,0,result);//意思是在num当中从第0个字节开始读取result个字节,然后形成字符串让String指向它
                System.out.println(temp+"\t"+result+"个字节");
//                for(byte o :num)
//                    System.out.println(o);
            }//每次提取三个字节
        }catch(FileNotFoundException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();;
        }finally{
            try{
                if(a!=null) {
                    a.close();
                }
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }

2.FileOutputStream

? ? ? ? 1.构造方法:

? ? ? ? ? ? ? ? 1.new FileOutputStream(String);

? ? ? ? ? ? ? ? 2.newFileOutputStream(String,boolean);

? ? ? ? ? ? ? ? 3.共同点

? ? ? ? ? ? ? ? ? ? ? ? 以上两种构造方法都会创建一个对象让这个对象指向某个文件,如果这个文件不存在就会直接创建这个文件,如果这个文件存在就会进行写入,如果文件无法打开就会抛

? ? ? ? ? ? ? ? 4.区别

? ? ? ? ? ? ? ? ? ? ? ? 写入的时候:

? ? ? ? ? ? ? ? ? ? ? ? ?????????? ? ? 第一种构造方法会清空原文件然后重新开始写入

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?第二种构造方法如果传入的布尔值为true说明存在这个文件,就会接续着原文件的内容进行写入

? ? ? ? 2.写入文件

? ? ? ? ? ? ? ? ? ? ? ? 1.使用write方法

? ? ? ? ? ? ? ? ? ? ? ? 2.write方法的使用

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? write(byte数组)

? ? ? ? ? ? ? ? ? ? ? ? 3.如何从String转byte数组:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 使用getBytes方法

?eg:

????????String a="asda";

????????byte b[] = a.getBytes();

//写入文件
    public static void write(String name,String name1){
        FileOutputStream a = null;
        FileOutputStream b = null;
        //写了两个文件,一个本来没有,一个本来就有
        try{
            a= new FileOutputStream(name);
            b=new FileOutputStream(name1,true);
            String str = "adwawdawdawdawd";
            String str1 = "java从入门到放弃";
            byte[] str2 = str.getBytes();
            byte[] str3 = str1.getBytes();
            a.write(str2);
            b.write(str3);
            a.flush();
            b.flush();
        }catch(FileNotFoundException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            try{
                if(a!=null){
                    a.close();
                }
                if(b!=null){
                    b.close();
                }
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }

3.?FileReader

? ? ? ? 与FileInputStream的用法一致,只不过在读取的时候读取多字节从byte[],变成了char[]

4.FileWriter

? ? ? ? 与FileOutputStream的用法一致

????????

文章来源:https://blog.csdn.net/zjh20040430/article/details/135534647
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。