溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在Java 中FileReader與FileWriter有哪些區(qū)別

發(fā)布時(shí)間:2020-11-19 16:25:22 來源:億速云 閱讀:183 作者:Leah 欄目:編程語言

在Java 中FileReader與FileWriter有哪些區(qū)別?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

FileReader和FileWriter源碼分析

1. FileReader 源碼(基于jdk1.7.40)

  package java.io;
 public class FileReader extends InputStreamReader {
   public FileReader(String fileName) throws FileNotFoundException {
     super(new FileInputStream(fil java io系列21之 InputStreamReader和OutputStreamWritereName));
   }
   public FileReader(File file) throws FileNotFoundException {
     super(new FileInputStream(file));
   }
   public FileReader(FileDescriptor fd) {
     super(new FileInputStream(fd));
   }
 }

從中,我們可以看出FileReader是基于InputStreamReader實(shí)現(xiàn)的。

2. FileWriter 源碼(基于jdk1.7.40) 

 package java.io;
 public class FileWriter extends OutputStreamWriter {
   public FileWriter(String fileName) throws IOException {
     super(new FileOutputStream(fileName));
   }
   public FileWriter(String fileName, boolean append) throws IOException {
     super(new FileOutputStream(fileName, append));
   }
   public FileWriter(File file) throws IOException {
     super(new FileOutputStream(file));
   }
   public FileWriter(File file, boolean append) throws IOException {
     super(new FileOutputStream(file, append));
   }
   public FileWriter(FileDescriptor fd) {
     super(new FileOutputStream(fd));
   }
 } 

從中,我們可以看出FileWriter是基于OutputStreamWriter實(shí)現(xiàn)的。

示例程序 

import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.FileWriter;;
 import java.io.FileReader;
 import java.io.IOException;
 /**
  * FileReader 和 FileWriter 測(cè)試程序
 *
 * 
 */
 public class FileReaderWriterTest {
   private static final String FileName = "file.txt";
   private static final String CharsetName = "utf-8";
   public static void main(String[] args) {
     testWrite();
     testRead();
   }
   /**
   * OutputStreamWriter 演示函數(shù)
   *
   */
   private static void testWrite() {
     try {
       // 創(chuàng)建文件“file.txt”對(duì)應(yīng)File對(duì)象
       File file = new File(FileName);
       // 創(chuàng)建FileOutputStream對(duì)應(yīng)FileWriter:將字節(jié)流轉(zhuǎn)換為字符流,即寫入out的數(shù)據(jù)會(huì)自動(dòng)由字節(jié)轉(zhuǎn)換為字符。
       FileWriter out = new FileWriter(file);
      // 寫入10個(gè)漢字
       out1.write("字節(jié)流轉(zhuǎn)為字符流示例");
      // 向“文件中”寫入"0123456789"+換行符
      out1.write("0123456789\n");
      out1.close();
     } catch(IOException e) {
       e.printStackTrace();
     }
   }
   /**
   * InputStreamReader 演示程序
   */
   private static void testRead() {
     try {
      // 方法1:新建FileInputStream對(duì)象
       // 新建文件“file.txt”對(duì)應(yīng)File對(duì)象
       File file = new File(FileName);
       FileReader in1 = new FileReader(file);
       // 測(cè)試read(),從中讀取一個(gè)字符
      char c1 = (char)in1.read();
       System.out.println("c1="+c1);
       // 測(cè)試skip(long byteCount),跳過4個(gè)字符
       in1.skip(6);
       // 測(cè)試read(char[] cbuf, int off, int len)
       char[] buf = new char[10];
       in1.read(buf, 0, buf.length);
       System.out.println("buf="+(new String(buf)));
       in.close();
     } catch(IOException e) {
       e.printStackTrace();
     }
   }
 }

運(yùn)行結(jié)果:

c1=字
buf=流示例0123456

看完上述內(nèi)容,你們掌握在Java 中FileReader與FileWriter有哪些區(qū)別的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI