FileWriter和FileReader的基本使用

FileWriter(字符流)

  1. 最简单的方式写入字符串

    • 标准流程(写入->刷新->关闭)

      @Test
      public void fileWriteTest1() throws IOException {
          FileWriter fileWriter = new FileWriter("E:/fileWriteTest.txt");
          //向缓冲区写入数据(此时数据还没有写入硬盘)
          fileWriter.write("赵玉龙");
          //刷新缓冲区(此时数据才会被写入硬盘,之后可继续写入数据)
          fileWriter.flush();
          //释放资源(不可再向文件写入数据)
          fileWriter.close();
      }
      
    • 写完直接关闭(写入->刷新->关闭)

      @Test
      public void fileWriteTest2() throws IOException {
          FileWriter fileWriter = new FileWriter("E:/fileWriteTest.txt");
          //向缓冲区写入数据(此时数据还没有写入硬盘)
          fileWriter.write("赵玉龙");
          //释放资源(会自动刷新缓冲区将数据写入硬盘,但不可再写入)
          fileWriter.close();
      }
      
  2. 以追加的方式写

    @Test
    public void fileWriteAppendTest() throws IOException {
        /*
        * 第二个参数表示是否允许追加数据
        * true:允许追加数据
        * false:不允许追加数据(默认值)
        * */
        FileWriter fileWriter = new FileWriter("E:/fileWriteAppendTest.txt", true);
        //第一次写入
        fileWriter.write("赵玉龙\n");
        //第二次写入(因为允许追加,所以此时写入的数据不会覆盖第一次写入的数据)
        fileWriter.write("hello,world!\n");
        //刷新缓冲区
        fileWriter.flush();
        
        //释放资源
        fileWriter.close();
    }
    

FileReader(字符流)

  1. 一个字符一个字符读

    @Test
    public void fileReaderOneByOneTest() throws IOException{
        FileReader fileReader = new FileReader("E:/test.txt");
        int len;
        //单个字符读取(注:返回值为当前读取到的字符的ASCII码)
        while ((len = fileReader.read()) != -1){
            System.out.print((char) len);
        }
        fileReader.close();
    }
    
  2. 向缓冲区多次读取多个字符

    @Test
    public void fileReaderByArrayTest() throws IOException{
        FileReader fileReader = new FileReader("E:/test.txt");
        int len;
        //多个字符读取(注:返回值的为当前读取到字符的个数)
        char[] c = new char[1024];
        while ((len = fileReader.read(c)) != -1){
            System.out.println(new String(c,0,len));
        }
        fileReader.close();
    }
    
### 回答1: FileReaderFileWriter是Java中用于读取和写入文件的类。FileReader用于读取字符文件,而FileWriter用于写入字符文件。这两个类都是基于字符流的,可以读取和写入Unicode字符。使用FileReaderFileWriter可以方便地读取和写入文本文件。 ### 回答2: FileReaderFileWriter是Java中输入和输出字符流相关的类,用于读取和写入文件内容。使用FileReader可以读取文件中的字符数据,配合BufferedReader类可以按行读取内容;使用FileWriter可以将数据以字符形式写入到文件中。 FileReaderFileWriter最大的好处是可以直接对文件进行读写操作,无需通过其他流来进行处理,同时它们支持Unicode字符编码,可以处理多种不同编码的文件。使用这两个类可以进行文件的读写,包括文本文件、XML文件等等。 FileReader使用步骤为首先创建一个FileReader对象,并指定要读取的文件路径,然后使用read()方法读取文件中的字符,每次读取一个字符,直到返回-1表示文件读取结束。在读取文件时,需要关闭FileReader对象,以释放资源。 FileWriter使用步骤为首先创建一个FileWriter对象,并指定要写入的文件路径,然后使用write()方法将数据以字符形式写入到文件中。在写入文件时,需要关闭FileWriter对象,以确保文件写入完成。 总之,使用FileReaderFileWriter可以方便地读写文件,适合于处理文本文件内容。在实际开发中,使用这两个类可以很好地帮助我们完成文件的输入输出任务。 ### 回答3: FileReaderFileWriter是Java中常用的文件输入输出类,用于读取或写入文件中的数据,是Java中文件读写操作的核心类之一。下面我们来详细了解一下这两个类的用法和注意事项。 使用FileReader读取文件数据时,需要创建一个FileReader对象,然后使用该对象的read()方法逐字符地读取文件内容,并将其存储到缓冲区中,直至文件末尾。读取文件的示例代码如下: FileReader fr = new FileReader("filename.txt"); int ch; while ((ch = fr.read()) != -1) { System.out.print((char) ch); } fr.close(); 使用FileWriter写入数据到文件时,同样要创建一个FileWriter对象,然后使用该对象的write()方法向文件中逐字符地写入数据。写入文件的示例代码如下: FileWriter fw = new FileWriter("filename.txt"); fw.write("Hello World!\n"); fw.write("This is a test message."); fw.close(); 需要注意的是,使用FileReaderFileWriter进行文件操作时存在着一些潜在的风险和问题。 首先,两者都是使用单个线程进行文件读写,当文件过大时,可能会导致程序阻塞和性能瓶颈。对于大文件的读取和写入,建议使用BufferedReader和 BufferedWriter等类进行操作。 其次,FileReaderFileWriter都是字符流类,读写的数据是字符类型,如果需要读写二进制数据或图片等,则需使用字节流类如FileInputStream和FileOutputStream等。 最后,当操作完成后,需要关闭文件流对象,避免资源浪费和文件打开异常。建议使用try-catch-finally语句块或者Java7中的try-with-resources语法糖处理异常和关闭文件。 总之,使用FileReaderFileWriter进行文件读写是Java中文件输入输出中的一种常用方式,但需要注意线程安全、数据类型和资源释放等问题。在实际应用中,要根据具体的需求选取不同的文件操作类进行文件读写操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值