首页 课程 师资 教程 报名

java filewriter的用法及FileReader的用法

  • 2019-08-27 14:09:11
  • 2978次 动力节点

  


今天动力节点java学院小编为大家介绍java filewriter的用法及FileReader的用法,希望对大家有帮助,下面就随小编一起看看java filewriter的用法及FileReader的用法吧。


FileWriter 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。文件是否可用或能否可以被创建取决于基础平台。特别是某些平台一次只允许一个FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。


  FileOutputStream 用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter。


  FileWriter共有五个构造方法


  FileWriter(File file) 根据给定的 File 对象构造一个 FileWriter 对象。


  FileWriter(File file, boolean append) 根据给定的 File 对象构造一个 FileWriter 对象。


  FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象。


  FileWriter(String fileName, boolean append) 根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。


  FileWriter(FileDescriptor fd) 构造与某个文件描述符相关联的 FileWriter 对象。


  其中方法可以分为三组,入参带File的为一组,入参带String 的为一组,这两组方法基本相似。


  带File 的构造方法是直接传入文件来构造FileWriter对象,而带String 的构造方法,则必须先通过new File(String path) 来构造File 文件,再来构造FileWriter对象。


  再看 File file 入参的两个方法


  FileWriter(File file) 和 FileWriter(File file, boolean append) 的区别在于后面多了一个boolean append 参数.


  append 如果为 true,则将字节写入文件末尾处,而不是写入文件开始处。


  append 相当于指定了写入的方式,是覆盖写还是追加写。


  append 为true时,追加写,相当于Linux 里面的 >> 操作符;


1566885017548519.png


package cn.itcast.demo3;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;


public class Java_2 {

    public static void main(String args[]) {

        File f1=new File("D://a.txt");

        //*********Found**********

        File f2=new File("D://b.txt");

        try {

            //*********Found**********

            FileReader fr=new FileReader(f2);

            FileWriter fw=new FileWriter(f1,true);

            int b;

            //*********Found**********

            while(( b=fr.read() ) != -1 )  fw.write(b);

            fr.close();

            fw.close();

        } catch(IOException e) {

            e.printStackTrace();

        }

        System.out.println("has done!");

        //*********Found**********

        if(f2.delete()) System.out.print("SUCCESS!");

    }

}


1566885071286434.png

1566885091168756.png


append 为false时,覆盖写,相当于Linux 里面的 > 操作符。


1566885130826868.png

1566885152437400.png





1、java filewriter的用法



1566885182662234.png

package cn.itcast.demo3;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;


public class Java_2 {

    public static void main(String args[]) throws IOException {

    /** 

         * 创建一个可以往文件中写入字符数据的字符流输出流对象 

         * 创建时必须明确文件的目的地 

         * 如果文件不存在,这回自动创建。如果文件存在,则会覆盖。 

         * 当路径错误时会抛异常 

         *  

         * 当在创建时加入true参数,实现对文件的续写。 

         * 当在创建时加入false参数,实现对文件的覆盖。 

         */  

        File f1=new File("D://a.txt");

        FileWriter fw = new FileWriter(f1, true);

        /** 

         * 调用该对象的write方法,向文件写入字符。 

         *  

         * 其实写入到了临时存储缓冲区中 

         */  

         fw.write("haha");

         //进行刷新,将字符写到目的地中。

         fw.flush(); 

         //关闭流,关闭资源。在关闭前会调用flush方法 刷新缓冲区。关闭后在写的话,会抛IOException

         fw.close(); 

        

    }

}


1566885263956709.png


关于FileWriter的的异常处理。


1566885323518407.png

package cn.itcast.demo3;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;


public class Java_2 {

    public static void main(String args[]){

    /** 

         * 创建一个可以往文件中写入字符数据的字符流输出流对象 

         * 创建时必须明确文件的目的地 

         * 如果文件不存在,这回自动创建。如果文件存在,则会覆盖。 

         * 当路径错误时会抛异常 

         *  

         * 当在创建时加入true参数,实现对文件的续写。 

         * 当在创建时加入false参数,实现对文件的覆盖。 

         */  

        File f1=new File("D://a.txt");

        FileWriter fw = null;

try {

fw = new FileWriter(f1, false);

fw.write("hello" + "world!"); 

} catch (IOException e) {

e.printStackTrace();

}finally {

            if (fw != null){  

                try {  

                fw.flush(); 

                    fw.close();  

                } catch (IOException e) {  

                    throw new RuntimeException("关闭失败!");  

                }  

            }

}

        

    }

}


1566885368654979.png



2、java FileReader的用法


示例代码一,文件读取的第一种方式,示例代码二,文件读取的第二种方式,第二种是常用的,必须会。



package cn.itcast.demo3;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;


public class Java_2 {

    public static void main(String args[]){

    /*

    * 对文件的读取一共有两种方式,先介绍第一种读取方式

    * 步骤:

    * 1.创建文件读取流对象,和指定名称的文件相关联,如果不存在指定文件的话,发生FileNotFoundException。

    * 2.调用read方法,由于read一次只读一个字符,所以要用while循环。

    * 3.关闭资源块。

         */  

        File f1=new File("D://a.txt");

        FileReader fr = null;

try {

fr = new FileReader(f1);

int ch = 0;

//记住即可,read方法如果没有可读取的了,则返回-1

//所以就是一直读取,并将读取的内容存入ch,一直到结尾

while((ch=fr.read()) != -1){

System.out.print((char)ch + " ");

}

} catch (IOException e) {

e.printStackTrace();

}finally {

            if (fr != null){  

                try {  

                fr.close();  

                } catch (IOException e) {  

                    throw new RuntimeException("读取失败!");  

                }  

            }

}

        

    }

}


1566885437479790.png





package cn.itcast.demo3;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;


public class Java_2 {

    public static void main(String args[]){

/*

* 文件读取的第二种方式:通过字符数组进行读取

* 步骤和第一种基本相似,但其中就是多创建一个字符数组

         */  

        File f1=new File("D://a.txt");

        FileReader fr = null;

try {

fr = new FileReader(f1);

char[] buf=new char[1024];

//read(char [])返回读到的字符个数

int num=0;

//读取文件并把它存入buf中,用num返回读到字符的个数,一直读到结尾

while((num=fr.read(buf)) != -1){

//new String(字符串,开始位置,结尾位置)

//字符数组里仍有空白没有读入的位置,所以不要了

System.out.print((new String(buf,0,num)));

}

} catch (IOException e) {

e.printStackTrace();

}finally {

            if (fr != null){  

                try {  

                fr.close();  

                } catch (IOException e) {  

                    throw new RuntimeException("读取失败!");  

                }  

            }

}

        

    }

}



1566885479212810.png



以上就是动力节点java学院小编介绍的“java filewriter的用法及FileReader的用法”的内容,希望对大家有帮助,更多精彩内容请继续关注动力节点java学院官网。



选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交