日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Java基础(二十七)Java IO(4)字符流(Character Stream)

發布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础(二十七)Java IO(4)字符流(Character Stream) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  字符流用于處理字符數據的讀取和寫入,它以字符為單位。

  一、Reader類與Writer類

  1.Reader類是所有字符輸入流的父類,它定義了操作字符輸入流的各種方法。

  

  2.Writer類是所有字符輸出流的父類,它定義了操作輸出流的各種方法。

  

  二、InputStreamReader類與OutputStreamWriter類

  1.InputStreamReader是字節流通向字符流的橋梁。它可以根據指定的編碼方式,將字節輸入流轉換為字符輸入流。

  (1)構造方法有兩種:

  • InputStreamReader(InputStream in):使用默認編碼方式創建對象
  • InputStreamReader(InputStream in , String cname):使用指定的編碼方式cname創建對象

  (2)常用方法

  

  (3)示例

package jun.iplab.inputstreamreader;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;public class InputStreamReaderTest {public static void main(String[] args) {try {File file = new File("D:\\JavaIOTest\\InputStreamReaderTest.txt");FileInputStream fis = new FileInputStream(file);InputStreamReader isr = new InputStreamReader(fis);int rs;// 順序讀取文件里的內容并賦值給變量rs,通過強制類型轉換可以將字節類型轉換成字符類型while ((rs = isr.read())!= -1) {System.out.print((char)rs + "(" + rs + ")");}isr.close();fis.close();} catch (IOException e) {e.printStackTrace();}}
}輸出:
Y(89)o(111)u(117) (32)a(97)r(114)e(101) (32)b(98)e(101)a(97)u(117)t(116)i(105)f(102)u(117)l(108) (32)t(116)o(111)n(110)i(105)g(103)h(104)t(116).(46)

  2.OutputStreamWriter是字節流通向字符流的橋梁。寫出字節,并根據指定的編碼方式,將之轉換為字符流。

  (1)常用構造方法

  • OutputStreamWriter(OutputStream out)
  • OutputStreamWriter(OutputStream out, String cname)

  (2)常用方法

  

  (3)示例代碼

package jun.iplab.outputstreamwriter;import java.io.*;public class OutputStreamWriterTest {public static void main(String[] args) {File file_in = new File("D:\\JavaIOTest\\InputStreamReaderTest.txt");File file_out = new File("D:\\JavaIOTest\\OutputStreamWriterTest.txt");try {if (!file_in.exists()) {file_in.createNewFile();}if (!file_out.exists()) {file_out.createNewFile();}// 從file_in讀出內容,以字節流的形式FileInputStream fis = new FileInputStream(file_in);// 將輸入字節流轉換成輸入字符流InputStreamReader in = new InputStreamReader(fis);// 以覆蓋方式向file_out中輸出字節流FileOutputStream fos = new FileOutputStream(file_out, false);// 將輸出字符流轉換成輸出字節流并輸出到FileOutputStream對象中OutputStreamWriter out = new OutputStreamWriter(fos);int is;while ((is = in.read())!=-1) {out.write(is);}in.close();out.close();fis.close();fos.close();} catch (IOException e) {e.printStackTrace();}}
}

?

  三、FileReader類與FileWriter類

  1.FileReader類是Reader類的子類,它實現了從文件中讀出字符數據,是文件字符輸入流。

  (1)兩種構造方法

  • FileReader(String filepath)
  • FileReader(File file)

  (2)示例

package jun.iplab.filereader;import java.io.File;
import java.io.FileReader;
import java.io.IOException;public class FileReaderTest {public static void main(String[] args) {try {File file = new File("D:\\JavaIOTest\\OutputStreamWriterTest.txt");FileReader fr = new FileReader(file);char[] data = new char[512];int rs = 0;// 從文件中讀出字符數據并保存在字符數組data中,并且返回實際讀到的字符個數while ((rs = fr.read(data))>0) {System.out.println(rs);for (int i = 0; i < rs; i++) {System.out.print(data[i] + " ");}System.out.println();String str = new String(data, 0, rs);System.out.println(str);}fr.close();} catch (IOException e) {e.printStackTrace();}}
}輸出:
26
Y o u   a r e   b e a u t i f u l   t o n i g h t . 
You are beautiful tonight.

  2.FileWriter類是Writer類的子類,它實現了將字符數據寫入文件中,是文件字符輸出流。

  (1)構造方法

  • FileWriter(String filepath)
  • FileWriter(File file)

  (2)示例 

package jun.iplab.filewriter;import java.io.*;public class FileWriterTest {public static void main(String[] args) {try {File file_out = new File("D:\\JavaIOTest\\FileWriterTest.txt");if (!file_out.exists()) {file_out.createNewFile();}FileReader fr = new FileReader("D:\\JavaIOTest\\OutputStreamWriterTest.txt");FileWriter fw = new FileWriter(file_out,false);int is;while ((is=fr.read())!= -1) {System.out.print(is + " ");fw.write(is);}fr.close();fw.close();} catch (IOException e) {e.printStackTrace();}}
}輸出:
89 111 117 32 97 114 101 32 98 101 97 117 116 105 102 117 108 32 116 111 110 105 103 104 116 46 

?

  四、BufferedReader類與BufferedWriter類

  1.BufferedReader類是Reader類的子類,該類可以以行為單位讀取數據。

  (1)構造方法為

  • BufferedReader(Reader in)

  (2)BufferedReader類中提供了一個ReaderLine()方法,可以以行為單位讀取數據

  (3)示例

package jun.iplab.bufferreader;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;public class BufferedReaderTest {public static void main(String[] args) {try {FileReader fr = new FileReader("D:\\JavaIOTest\\OutputStreamWriterTest.txt");BufferedReader br = new BufferedReader(fr);String aline;while ((aline=br.readLine())!=null) {System.out.println(aline);}br.close();} catch (IOException e) {e.printStackTrace();}}
}輸出:
You are beautiful tonight.
I am your solider.

  2.BufferedWriter類是Writer類的子類,該類可以以行為單位寫入數據。

  (1)構造方法為

  • BufferedWriter(Writer out)

  (2)BufferedWriter類提供了一個newLine()方法,Writer類中沒有此方法,該方法時換行標記。

  (3)示例代碼

package jun.iplab.bufferedwriter;import java.io.*;public class BufferedWriterTest {public static void main(String[] args) {try {File file = new File("D:\\JavaIOTest\\BufferedWriterTest.txt");FileWriter fw = new FileWriter(file, true);BufferedWriter bw = new BufferedWriter(fw);bw.newLine();bw.write("hello");bw.newLine();bw.write("23333");bw.close();} catch (IOException e) {e.printStackTrace();}}
}

?

  五、PrintStream類與PrintWriter類

?  1.PrintStream是打印輸出流,它可以直接輸出各種類型的數據。

  (1)構造方法為:PrintStream(OutputStream out)

  (2)常用方法為:

  

  (3)示例代碼:

package jun.iplab.printstream;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Random;public class PrintStreamTest {public static void main(String[] args) {PrintStream ps;try {File file = new File("D:\\JavaIOTest\\PrintStreamTest.txt");if (!file.exists()) {file.createNewFile();}// 創建PrintStream對象ps = new PrintStream(new FileOutputStream(file));Random r = new Random();int rs;for (int i = 0; i < 5; i++) {rs = r.nextInt(100);// 調用println方法向PrintStreamTest.tx中寫入隨機數加換行符ps.println(rs + "\t");}ps.close();} catch (IOException e) {e.printStackTrace();}}
}PrintStreamTest.txt中的內容:
73    
57    
24    
30    
78    

?

  2.PrintWriter是打印輸出流,該流把Java語言的內構類型以字符表示形式傳送到相應的輸出流中,可以以文本的形式瀏覽。

  (1)構造方法:

  • PrintWriter(Writer out)
  • PrintWriter(OutputStream out)

  (2)常用方法:

  

  (3)示例代碼:

package jun.iplab.printwriter;import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;public class PrintWriterTest {public static void main(String[] args) {File file_in = new File("D:\\JavaIOTest\\OutputStreamWriterTest.txt");File file_out = new File("D:\\JavaIOTest\\PrintWriterTest.txt");try {// 創建一個BufferedReader對象BufferedReader br = new BufferedReader(new FileReader(file_in));// 創建一個PrintWriter對象PrintWriter pw = new PrintWriter(new FileWriter(file_out));String aline;// 讀出file_in中的數據并且打印輸出到file_out中while ((aline=br.readLine())!=null) {System.out.println(String.valueOf(aline));pw.println(aline);}br.close();pw.close();} catch (IOException e) {e.printStackTrace();}}
}輸出:
You are beautiful tonight.
I am your solider.

?

  六、System.in獲取用戶輸入

  System類是final類,該類不能被繼承,也不能創建System類的實例對象。

  Java中實現鍵盤輸入的一般過程是:

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
?? ??? ?String str = br.readLine();
?? ??? ?對str的一些操作
     br.close(); ? ?
?? ??? ?} catch (IOException e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}

  將鍵盤輸入的內容存儲到文件中:

package jun.iplab.systemin;import java.io.*;public class SystemInTest {public static void main(String[] args) {File file = new File("D:\\JavaIOTest\\SystemInTest.txt");try {if (!file.exists()) file.createNewFile();InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);String str = br.readLine();System.out.println("輸入的內容是: " + str);FileWriter fw = new FileWriter(file,true);BufferedWriter bw = new BufferedWriter(fw);bw.write(str);br.close();bw.close();fw.close();} catch (IOException e) {e.printStackTrace();}}}輸出:
You are beautiful tonight.
輸入的內容是: You are beautiful tonight.

?

  七、Scanner類

  Scanner類是java.util包中的類,該類用來實現用戶的輸入,是一種只要有控制臺就能實現輸入操作的類。

  1.構造方法

1.Scanner(InputStream in):
2.Scanner(File file)
...

  2.Scanner類的主要方法

next();     // 不可以讀入空格,讀到空白符(空格、回車、tab...)就結束,一般放到最后一個
nextLine(); // 可以讀入空格,讀到回車符就結束
nextInt();
close();

  3.代碼示例

package integer.jun.iplab;import java.util.Scanner;public class ScannerTest {public static void main(String[] args) {String name;int age;String address;// 創建Scanner對象Scanner sc = new Scanner(System.in);name = sc.nextLine();age = sc.nextInt();address = sc.next();System.out.println(name + " " + age + " " + address );}
}控制臺:
尼古拉斯 趙四
18
象牙山
尼古拉斯 趙四 18 象牙山

?

轉載于:https://www.cnblogs.com/BigJunOba/p/9412942.html

總結

以上是生活随笔為你收集整理的Java基础(二十七)Java IO(4)字符流(Character Stream)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。