Java编程的IO操作

一、IO类分类

 二、字符流和字节流分类

 三、重要类的使用方法

 3.1 字节输入流FileInputStream

package com.ietree.io;

import java.io.FileInputStream;

public class IODemos {
    public static void main(String[] args) throws Exception {
        FileInputStream fis = new FileInputStream("D:\\test.txt");
        // 方法一:读取单个字节,每次调用将后移一位,返回读取到的字节,如果读到文件末尾返回-1;
        // 缺点是每读一次循环一次,效率比较低    
        int data;
        while((data = fis.read()) != -1) {
            System.out.println((char)data);
        }
        fis.close();        
    }
}
package com.ietree.io;

import java.io.FileInputStream;

public class IODemos {
    public static void main(String[] args) throws Exception {
        FileInputStream fis = new FileInputStream("D:\\test.txt");
// 方法二:批量读取多个字节到字节数组,返回读取到的字节个数,如果读到文件末尾,返回-1
        byte[] buf = new byte[5];
        int len;
        while((len = fis.read(buf)) != -1) {
            System.out.print(new String(buf, 0, len));
        }
        fis.close();       
    }
}

  3.2 字节输出流FileOutputStream

package com.ietree.io;

import java.io.FileOutputStream;
import java.io.IOException;

public class TestFileOutputStream {

    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("src\\test.txt");
        // 写入单个字节
        fos.write('a');
        
        // 批量写入整个字节数组
        byte[] buf = "abcde".getBytes();
        fos.write(buf);
        
        // 批量写入字节数组指定部分
        fos.write("abcde".getBytes(), 1, 3);
        fos.close();
    }
}

  3.3 FileInputStream和FileOutputStream边读边写操作

package com.ietree.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestFisFos {
    public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream("D:\\11.png");
            fos = new FileOutputStream("src\\22.png");

            byte[] buf = new byte[1024];
            int len;
            while ((len = fis.read(buf)) != -1) {
                fos.write(buf, 0, len);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("复制完毕");
        try {
            if (fis != null)
                fis.close();
            if (fis != null)
                fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  3.4 字符输出流FileReader

package com.ietree.io;

import java.io.FileReader;
import java.io.IOException;

public class TestFileReader {
    public static void main(String[] args) throws IOException {
        FileReader reader = new FileReader("C:\\drivedbg.txt");

        // 方式一:int read读取单个字符
        int data;
        while ((data = reader.read()) != -1) {
            System.out.print((char) data);
        }

        // 方式二:批量读取到字符数组char[]
        char[] chs = new char[1024];
        int len;
        while ((len = reader.read(chs)) != -1) {
            System.out.print(new String(chs, 0, len));
        }
        reader.close();
    }
}

  3.5 字符写入流FileWriter

package com.ietree.io;

import java.io.FileWriter;
import java.io.IOException;

public class TestFileWriter {
    public static void main(String[] args) throws IOException {
        FileWriter writer = new FileWriter("src\\test.txt");
        writer.write("Hello world by FileWriter!");
        writer.close();
        System.out.println("文件写入成功!");
    }
}

  3.6 FileReader和FileWriter边读边写操作

package com.ietree.io;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class TestFrFw {
    public static void main(String[] args) {
        FileReader reader = null;
        FileWriter writer = null;
        try {
            reader = new FileReader("C:\\\\drivedbg.txt");
            writer = new FileWriter("src\\text.txt");
            
            int len;
            char[] chs = new char[1024];
            while ((len = reader.read(chs)) != -1) {
                writer.write(chs, 0, len);
            }
            if (reader != null)
                reader.close();
            if (writer != null)
                writer.close();
            System.out.println("文件复制完毕!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  3.7 缓存字节流BufferedInputStream和BufferedOutputStream边读边写操作

package com.ietree.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestBOSBIS {

    public static void main(String[] args) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\11.png"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src\\22.png"));
        
        byte[] chs = new byte[1024];
        int len;
        while((len = bis.read(chs)) != -1) {
            bos.write(chs, 0, len);
        }
        
        bis.close();
        bos.close();
        System.out.println("文件复制完毕!");
    }
}

3.8 缓存字符流BufferedReader

package com.ietree.io;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class TestBufferedReader {

    public static void main(String[] args) {
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("C:\\drivedbg.txt"));
            String str;
            while((str = br.readLine()) != null) {
                System.out.println(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(br != null)
                    br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

3.9 缓存字符流BufferedReader和BufferedWriter边读边写操作

package com.ietree.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class TestBufferedWriter {

    public static void main(String[] args) {
        BufferedWriter bw = null;
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("C:\\drivedbg.txt"));
            bw = new BufferedWriter(new FileWriter("src\\test.txt"));
            
            String line;
            while((line = br.readLine()) != null) {
                bw.write(line);
                bw.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(br != null)
                    br.close();
                if(bw != null)
                    bw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println("文件复制完毕!");
    }
}

 

posted @ 2022-03-16 15:39  远近啊  阅读(175)  评论(0编辑  收藏  举报