Java 中IO流字符流詳解及實例
Java—IO流 字符流
java的文本(char)是16位無符號整數(shù),是字符的unicode編碼(雙字節(jié)編碼)。
文件是byte byte byte ... 的數(shù)據(jù)序列。
文本文件是文本(char)序列按照某種編碼方案(uft-8、utf-16be、gbk)序列化為byte的存儲結(jié)果。
字符流(Reader、Writer)-->操作的是文本、文本文件
1.字符的處理,一次處理一個字符
2.字符的底層仍然是基本的字節(jié)序列
3.字符流的基本實現(xiàn):
InputStreamReader是字節(jié)流通向字符流的橋梁:它使用指定的 charset 讀取字節(jié)并將其解碼為字符。
OutputStreamWriter是字符流通向字節(jié)流的橋梁:可使用指定的 charset 將要寫入流中的字符編碼成字節(jié)。
public class ISReaderAndOSWriter {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("F:\\javaio\\java.txt");
FileOutputStream out = new FileOutputStream("F:\\javaio\\java1.txt");
InputStreamReader isr = new InputStreamReader(in, "gbk");
OutputStreamWriter osw = new OutputStreamWriter(out, "gbk");
int c;
// while ((c = isr.read()) != -1) {
// System.out.print((char)c);
// }
char[] buf = new char[8 * 1024];
while ((c = isr.read(buf, 0, buf.length)) != -1) {
String s = new String(buf, 0, c);
//System.out.println(s);
osw.write(s);
}
isr.close();
osw.close();
}
}
4.文件讀寫流,F(xiàn)ileReader和FileWriter,讀取字符文件和寫入字符文件的便捷類。
public class FileReaderAndFileWriter {
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("F:\\javaio\\javautf.txt");
FileWriter fw = new FileWriter("F:\\javaio\\javautf1.txt");
//FileWriter fw = new FileWriter("F:\\javaio\\javautf1.txt", true);//向指定文件中追加內(nèi)容
char[] buf = new char[1 * 1024];
int c;
while ((c = fr.read(buf, 0, buf.length)) != -1) {
System.out.println(c);
fw.write(buf, 0, c);
fw.flush();
}
fr.close();
fw.close();
}
}
5.字符流的過濾器
BufferedReader,一次讀一行
BufferedWriter/PrintWriter,一次寫一行
public class BufRAndBufWOrPrintW {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("F:\\javaio\\javautf.txt")));
//BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("F:\\javaio\\javautf2.txt")));
PrintWriter pw = new PrintWriter("F:\\javaio\\javautf3.txt");
String s;
while ((s = br.readLine()) != null) {
//一次讀一行,不能識別換行符
//bw.write(s);
//bw.newLine();//寫入一個行分隔符
//bw.flush();
pw.println(s);//通過寫入行分隔符字符串終止當前行
pw.flush();
}
br.close();
//bw.close();
pw.close();
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
SpringBoot實現(xiàn)識別圖片中的身份證號與營業(yè)執(zhí)照信息
這篇文章主要為大家詳細介紹了SpringBoot如何實現(xiàn)識別圖片中的身份證號與營業(yè)執(zhí)照信息,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2024-01-01
Java中system.exit(0) 和 system.exit(1)區(qū)別
本文主要介紹了Java中system.exit(0) 和 system.exit(1)區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05
Java創(chuàng)建數(shù)組的幾種方式總結(jié)
下面小編就為大家?guī)硪黄狫ava創(chuàng)建數(shù)組的幾種方式總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10
Spring?Boot中@Autowired注入為空的原因以及解決方法
最近在開發(fā)中遇到了使用@Autowired注解自動裝配時會報空指針,發(fā)現(xiàn)對象并沒有裝配進來,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot中@Autowired注入為空的原因以及解決方法,需要的朋友可以參考下2024-01-01

