java文件操作

IO流:

低效O:

FileWriter初始化操作

FileWriter(String Filename, boolean append)  // 参数append 默认为false

FileWriter对文件的写入操作

        void write(String str);  
        void write(String str, int index, int len);
        void write(int ch);  // 注意,这是写一个字符, 如:write(97),则写入的为'a',如果想写数字,推荐使用第一个,如write("97")
        void write(char[] chs); 
        void write(char[] chs, int index, int len);

Demo:

FileWriter fw = new FileWriter("d:\\a.txt");
 fw.write("IO流Demo");
fw.write("换\r\n行"); 
fw.flush();
fw.close();

低效I:

FileReader:
FileReader(String filename)

读取操作:

int read()  // 一次读取一个字符 以ASCII存储 想要看到字符 做类型转换 (char)read()
// 当返回值为-1时,说明没有数据了
int read(char[] cbuf)  // 一次读取一个字符数组,返回的是实际读取到的字符的个数

Demo1:

    //一次读取一个字符
    FileReader fr = new FileReader("d:\\a.txt");
    int ch;
    while((ch=fr.read())!=-1)
    {
        System.out.print((char)ch);
            
    }
    fr.close();

Demo2:

//一次读取一个1024个字符
            FileReader fr - new FileReader("d:\\a.txt");
            char[] chs = new char[1024];
            int len;
            while((len = read(chs))!= -1 )
            {
                System.out.print(new String(chs, 0, len));
            }
            fr.close();

高效O:

Demo:

            BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\bw.txt"));
            bw.write("高效O Demo");
            bw.write("换\r\n行");
            bw.flush();
            bw.close();
        特殊功能:
            void newLine() // 写一个换行符,具体是什么由系统决定, win(\r\n)   linux(\n)   mac(\r)

高效I:

Demo:

            BufferedReader br = new BufferedReader(new FileReader("d:\\bw.txt"));
            char[] chs = new char[1024];
            int len;
            while((len=bw.read(chs))!=-1)
            {
                System.out..print(new String(chs,0,len));
            }
            bw.close();
        特殊功能:
            String readLine()  // 一次读取一行数据,但是不读取换行符。

☆Demo:

            BufferedReader br = new BufferedReader(new FileReader("d:\\bw.txt"));
            String line;
            while((line = br.readLine()) != null)
            {
                System.out.println(line);
            }
            
            br.close;
//具有鲁棒性的文件写入
    public static void main(String[] args) {
        function("a.txt");
    }
    
    public static void function(String filename){
        FileWriter fw = null;
        try {
            //System.out.println(1/0);;
            fw = new FileWriter(filename);
            fw.write("hello world");
            fw.write("hello world");
            //fw.write(2/0);
            fw.write("hello world");
            fw.write("hello world");
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                if(fw!=null)
                    fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }
        
    }

使用字节流进行文件的复制(二进制文件的复制)

private static void method() throws FileNotFoundException, IOException {
    FileInputStream fis = new FileInputStream("这里是一个文件名");
    FileOutputStream fos = new FileOutputStream("另一个问件名");
    
    // 一次读一个字节
//      int by;
//      while((by = fis.read() ) !=-1){
//          fos.write(by);
//      }
    
    // 一次读取一个字符数组
    int len;
    byte[] bys = new byte[1024];
    while((len = fis.read(bys))!=1){
        fos.write(len);
    }
    
    fis.close();
    fos.close();
}
点赞