Java 中IO流字符流詳解及實(shí)例
Java—IO流 字符流
java的文本(char)是16位無(wú)符號(hào)整數(shù),是字符的unicode編碼(雙字節(jié)編碼)。
文件是byte byte byte ... 的數(shù)據(jù)序列。
文本文件是文本(char)序列按照某種編碼方案(uft-8、utf-16be、gbk)序列化為byte的存儲(chǔ)結(jié)果。
字符流(Reader、Writer)-->操作的是文本、文本文件
1.字符的處理,一次處理一個(gè)字符
2.字符的底層仍然是基本的字節(jié)序列
3.字符流的基本實(shí)現(xiàn):
InputStreamReader是字節(jié)流通向字符流的橋梁:它使用指定的 charset 讀取字節(jié)并將其解碼為字符。
OutputStreamWriter是字符流通向字節(jié)流的橋梁:可使用指定的 charset 將要寫(xiě)入流中的字符編碼成字節(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.文件讀寫(xiě)流,F(xiàn)ileReader和FileWriter,讀取字符文件和寫(xiě)入字符文件的便捷類(lèi)。
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.字符流的過(guò)濾器
BufferedReader,一次讀一行
BufferedWriter/PrintWriter,一次寫(xiě)一行
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) {
//一次讀一行,不能識(shí)別換行符
//bw.write(s);
//bw.newLine();//寫(xiě)入一個(gè)行分隔符
//bw.flush();
pw.println(s);//通過(guò)寫(xiě)入行分隔符字符串終止當(dāng)前行
pw.flush();
}
br.close();
//bw.close();
pw.close();
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
SpringBoot實(shí)現(xiàn)識(shí)別圖片中的身份證號(hào)與營(yíng)業(yè)執(zhí)照信息
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何實(shí)現(xiàn)識(shí)別圖片中的身份證號(hào)與營(yíng)業(yè)執(zhí)照信息,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2024-01-01
Java AtomicInteger類(lèi)的使用方法詳解
這篇文章主要介紹了Java AtomicInteger類(lèi)的使用方法詳解,文中有具體實(shí)例代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10
Java中system.exit(0) 和 system.exit(1)區(qū)別
本文主要介紹了Java中system.exit(0) 和 system.exit(1)區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
Spring?populateBean屬性賦值和自動(dòng)注入
這篇文章主要為大家介紹了Spring?populateBean屬性賦值和自動(dòng)注入示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Java創(chuàng)建數(shù)組的幾種方式總結(jié)
下面小編就為大家?guī)?lái)一篇Java創(chuàng)建數(shù)組的幾種方式總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
Spring?Boot中@Autowired注入為空的原因以及解決方法
最近在開(kāi)發(fā)中遇到了使用@Autowired注解自動(dòng)裝配時(shí)會(huì)報(bào)空指針,發(fā)現(xiàn)對(duì)象并沒(méi)有裝配進(jìn)來(lái),下面這篇文章主要給大家介紹了關(guān)于Spring?Boot中@Autowired注入為空的原因以及解決方法,需要的朋友可以參考下2024-01-01

