欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

文件的输入输出

程序员文章站 2024-03-17 09:36:04
...

OutputStream

public static void main(String[] args) throws IOException{
        FileOutputStream fos = new FileOutputStream("D:\\1.txt");
            String s = "hello";
            fos.write(s.getBytes());
            
            fos.flush();
            fos.close();    
    }

InputStream

public static void main(String[] args) throws IOException{
        FileInputStream fis = new FileInputStream("D:\\src\\1.txt");
        /*
        int ch;
        while((ch = fis.read()) != -1) {
            System.out.print((char)ch);
        }
        */
        //定义一个刚刚好的缓冲区,不用再循环了
        byte[] buf = new byte[fis.available()];
        fis.read(buf);
        System.out.println(new String(buf));
        fis.close();
    }

Reader

public static void main(String[] args) throws IOException{
        //创建一个文件读取流对象,和指定名称的文件相关连
        //如果文件不存在,会发成异常FileNotFoundException
        FileReader fr = new FileReader("D:\\src\\1.txt");
        
        /*方法一
        //调用读取流对象的read方法
        //read() 一次读一个字符,而且会自动往下读
        
        int ch;
        while((ch = fr.read()) != -1) {
            System.out.print((char)ch);
        }
        */
        //方法二
        //定义字符数组,用于存储读到的字符
        //read(char[]) 返回的是读到字符个数
        char[] buf = new char[1024];
        int num;
        while((num = fr.read(buf)) != -1) {
            //把buf里面的字符打包成字符串输出
            System.out.print(new String(buf, 0, num));
        }
    }

Writer

public static void main(String[] args) throws IOException {
        //创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件
        //而且该文件就会被创建到指定的目录下。如果该目录下已有同名文件,将被覆盖
        //明确数据存放的目的地
        FileWriter fw = new FileWriter("D:\\1.txt");
        
        //调用Writer方法,将字符串写入到流中
        fw.Writer("Hello");

        //刷新流对象中的缓冲数据,将数据刷到目的地中
        fw.flush();
        
        //关闭资源
        //和flush的区别:刷新缓冲并关闭资源,close刷新后,流会关闭
        fw.close();
    }

对已有文件的续写

public static void main(String[] args) throws IOException{
        FileWriter fw = new FileWriter("D:\\1.txt", true);
        
        fw.write("\r\nworld!");    // \r\n 换行续写
        fw.close();
    }

文件的拷贝

public static void main(String[] args) throws IOException{
        //定义读取流和文件相关联
        FileReader fr = new FileReader("D:\\1.txt");
        //创建目的地
        FileWriter fw = new FileWriter("D:\\2.txt");
        char[] buf = new char[1024];
        int len;
        //通过不断读写来拷贝数据
        while((len = fr.read(buf)) != -1) {
            fw.write(buf, 0, len);
        }
        fw.close();
        fr.close();
    }

IO异常的处理

public static void main(String[] args) {
        FileWriter fw = null;
        try {
            fw = new FileWriter("D:\\1.txt");
            fw.write("Hello");
        } catch (IOException e) {
            System.out.println("User: "+e.toString());
        } finally {
            try {
                if(fw != null) {
                    fw.close();
                } 
            } catch (IOException e) {
                    System.out.println("User: "+e.toString());
            }
        }
    }