java之轉換流,OutputStreamWriter的簡單介紹

2020-12-27 彼岸end

各位小夥伴們大家好,在之前的文章中,小編介紹了java之轉換流的原理。這次,小編要介紹的是轉換流中的OutputStreamWriter,與及它的使用,具體如下:

java.io.OutputStreamWriter extends Writer

OutputStreamWriter:是字符通向字節流的橋梁:可以指定的charset將要寫入流中的字符編碼成字節。(編碼:能看懂的字符變為看不懂的字節)

繼承自父類的共性成員方法

1. void write(int c)寫入單個字符。

2. void write(char[] cbuf)寫入字符數組

3. abstradt void write(char[] cbuf,int off,int len)寫入字符數組的某一部分,off數組的開始索引,len字符數組個數

4. void white(String str)寫入字符串

5. void white(String str,int off,int len)寫入字符串的某一部分,off字符串的開始索引,len寫的字符串個數

6. void flush()刷新該流的緩衝

7. void close()關閉此流,但要先刷新它

構造方法

OutputStreamWriter(OutputStream out)創建使用默認字符編碼OutputStreamWriter

OutputStreamWriter(OutputStream out,String charsetName)創建使用指定字符集得OutputStreamWriter

參數:

OutputStream out:字節輸出流,可以用來寫轉換之後的字節到文件中

String charsetName:指定的編碼表名稱,不區分大小寫,可以是utf-8/UTF-8/GBK,…不指定默認使用UTF-8

使用步驟(重點):

1. 創建OutputStreamWriter對象,構造方法中傳遞字節輸出流和指定的編碼表名稱

2. 使用·OutputStreamWriter對象中的方法write,把字符轉為字節存儲到緩衝區中(編碼)

3. 使用OutputStreamWriter對象中的方法flush,把內存中的字節刷新到文件中(使用字節流寫字節的過程)

4. 釋放資源

代碼如下:

public class Demo02OutputStreamWriter {

public static void main(String args[]) throws IOException {

write_utf_8();

write_Unicode();

}

/*使用轉換流OutputStreamWriter寫Unicode格式的文件*/

private static void write_Unicode() throws IOException {

/*1.創建OutputStreamWriter對象,構造方法中傳遞字節輸出流和指定的編碼表名稱*/

OutputStreamWriter OSW=new OutputStreamWriter(new FileOutputStream("D:\\programming\\IntelliJ IDEA2018\\untitled13\\Unicode.txt"),"Unicode");

/*2.使用OutputStreamWriter對象中的方法write,把字符轉為字節存儲到緩衝區中(編碼)*/

OSW.write("橙子");

/*3.使用OutputStreamWriter對象中的方法flush,把內存中的字節刷新到文件中(使用字節流寫字節的過程)*/

OSW.flush();

//釋放資源

OSW.close();

}

/*使用轉換流OutputStreamWriter寫UTF-8格式的文件*/

private static void write_utf_8() throws IOException {

// TODO Auto-generated method stub

/*1.創建OutputStreamWriter對象,構造方法中傳遞字節輸出流和指定的編碼表名稱*/

OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("D:\\programming\\IntelliJ IDEA2018\\untitled13\\utf_8.txt"),"utf-8");

/*2.使用·OutputStreamWriter對象中的方法write,把字符轉為字節存儲到緩衝區中(編碼)*/

osw.write("hello");

/*3.使用OutputStreamWriter對象中的方法flush,把內存中的字節刷新到文件中(使用字節流寫字節的過程)*/

osw.flush();

//釋放資源

osw.close();

}

}

關於java當中轉換流,OutputStreamWriter的使用,主要是通過指定的編碼表名稱,來查詢相對應的編碼表,將字符編碼為字節存儲到緩衝區,再使用flush方法將內存中的文件刷新帶文件中。小編就先說到這裡,希望這篇文章可以幫到大家也歡迎各位小夥伴們補充和糾錯

圖片來自網絡,如有侵權,請聯繫作者刪除

相關焦點

  • java之字符緩衝輸入流,BufferedReader的簡單介紹
    各位小夥伴們大家好,在之前的文章中,小編介紹了字符緩衝輸出流java之字符緩衝輸出流,BufferedWriter的簡單介紹,這次小編要介紹的是字符緩衝輸入流,具體如下:java.io.BufferedReader extends Reader繼承自父類的共性成員文件:int read()讀取單個字符並返回int read(char[] cbuf)一次讀取多個字符
  • java之列印流,printStream的簡單介紹
    各位小夥伴們大家好,在之前的文章中小編介紹了序列化與反序列化的相關知識,這次小編要介紹的是列印流的一些概念還有使用,具體如下:java.io.PrintStream:列印流PrintStream為其他輸出流添加了功能,使它們能夠方便地列印各種數據值和表示形式
  • Java之throw關鍵字的簡單介紹
    各位小夥伴們大家好,在之前的文章中小編介紹了異常的產生過程Java之異常產生過程解析,這次小編要介紹的是throw關鍵字,這個關鍵字可以在指定的方法中拋出指定的異常。使用格式:throw new xxxException("異常產生的原因");使用這個關鍵字,大家要注意以下幾點:throw關鍵字必須寫在方法的內部。
  • Java基礎面試題簡單總結
    精度不準確,應該用強制類型轉換,如下所示:float f=(float)3.431、介紹JAVA中的Collection FrameWork(包括如何寫自己的數據結構)?48、一個".java"源文件中是否可以包括多個類(不是內部類)?有什麼限制? 答:可以。必須只有一個類名與文件名相同。49、java中有幾種類型的流?
  • java數據類型的強制轉換及相關注意事項
    各位小夥伴們大家好,在上一篇文章中,小編介紹的是數據類型的自動轉換,這次小編要介紹的是數據類型的強制轉換。之前小編有講過,如果數據要進行自動類型轉換,就要符合從小到大的規則,如果不符合從小到大的規則,就無法進行自動類型轉換,如果這個時候就需要用到數據類型的強制轉換。在強制類型轉換中,代碼要需要進行特殊的格式處理,不能自動完成。
  • java——Scnner()類下面有幾種方法呢?
    一、Scnner類 Scnner類在java.util包中一個可以使用正則表達式來解析基本類型和字符串的簡單文本掃描器 findInLine(java.lang.String)、findWithinHorizon(java.lang.String, int) 和 skip(java.util.regex.Pattern) 方法的執行與分隔符模式無關。這些方法會嘗試匹配與輸入中的分隔符無關的指定模式,因此可用於分隔符無關的特殊環境中。在等待更多輸入時這些方法可能阻塞。
  • 「事件驅動架構」GoldenGate創建從Oracle到Kafka的CDC事件流(2)
    replicat將從trail日誌bb讀取事務中的插入、更新和刪除操作,並將它們轉換為JSON編碼的Kafka消息。因此,創建一個名為eshop_kafkaconnect的文件。truegg.handler.kafkaconnect.includeCurrentTimestamp=truegg.handler.kafkaconnect.includePosition=truegg.handler.kafkaconnect.includePrimaryKeys=truegg.handler.kafkaconnect.includeTokens=true goldengate.userexit.writers=javawriterjavawriter.stats.display
  • Java之final關鍵字的簡單介紹下
    各位小夥伴大家好,在之前的文章中,小編有介紹過,final關鍵字修飾局部變量Java之final關鍵字的簡單介紹中,支持小編要介紹的是final關鍵字修飾成員變量Java之成員變量和局部變量的區別。2.對於final修飾的成員變量,要麼使用直接賦值,要麼通過構造方法Java之構造方法與this關鍵字的簡單介紹賦值,二者選其一3.必須保證類當中所有重載的構造方法,都最終會對final的成員變量進行賦值。
  • Java之final關鍵字的簡單介紹中
    各位小夥伴,大家好,在之前的文章小編有介紹過關鍵字fina修飾類和成員方法Java之final關鍵字的簡單介紹上。這次,小編要介紹的是關鍵字final修飾局部變量。代碼如下:public class Demo01Final {public static void main(String[] args) {int num1=11;System.out.println(num1);num1=12;//變量可以改變Java之成員變量和局部變量的區別System.out.println(num1);//一旦使用final來修飾變量,這個變量就不能進行改變
  • 這些 Java 8 官方挖的坑,你踩過幾個?
    Caused by: java.lang.IllegalArgumentException: Illegal base64 character 3f    at java.util.Base64$Decoder.decode0(Base64.java:714)    at java.util.Base64$Decoder.decode
  • 編寫一個Open Live Writer的VSCode代碼插件
    經過之前上次的折騰(一次查找Windows Live Writer的VSPaste插件丟失RTF格式信息的經歷),我的第一反應就是判斷剪貼板中是否含有RTF格式的數據,因為VSPaste的原理是判斷剪貼板中是否存在RTF格式的數據,如果存在,將其轉換為HTML。
  • java中賦值運算符+=的意思
    java基礎中+=的意思就是先將兩邊相加在賦值給左邊。a +=10;//a = a + 10;System.out.println(a);}}題目中a= a+ 10;為何報錯呢,因為a是short類型,和10進行加法運算得到的是int類型,自動升級轉換
  • 「原創」Java並發編程系列06|你不知道的final
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫final在Java中是一個保留的關鍵字,可以修飾變量、方法和類。那麼fianl在並發編程中有什麼作用呢?本文就在對final常見應用總結基礎上,講解final並發編程中的應用。
  • 我要告訴你:java接口中可以定義private私有方法
    在傳統的Java編程中,被廣為人知的一個知識點是:java Interface接口中不能定義private私有方法。只允許我們定義public訪問權限的方法、抽象方法或靜態方法。但是從Java 9 開始,Interface 接口中允許定義私有方法和私有靜態方法。下面我們就來為大家介紹其語法規則,和為什麼要有這樣的設計。
  • Java中10大常問的關於String的問題
    簡單來說, 「==」 判斷兩個引用的是不是同一個具體來說是地址,不是值而 equals 判斷兩個對象的值是否相等字符串的駐留 ( String Interning ) 則會更好地理解這個問題2. 對於信息安全敏感的場景下          為何使用char[]要比String更好?
  • Java基礎教程:Java包裝類概念及應用
    」裝箱「與」拆箱「:裝箱:從基本類型轉換為對應的包裝類對象。拆箱:從包裝類對象轉換為對應的基本類型。基本類型與字符串之間的轉換基本類型轉換為String轉換方式方式一:直接在數字後加一個空字符串方式二:通過String類靜態方法
  • 手把手教你用Java打造一款簡單故事書(下篇)
    上篇文章,我們介紹了故事書的理論內容,這篇文章,我們一起來看具體的代碼實現。,具體教程如下。一、項目背景隨著移動網際網路的發展,電子版的書成為現在主流,針對用戶的需求,有的放矢地呈現給用戶,閱讀電子版書,提高他們的學習效率。
  • Java 中的繼承和多態(深入版)
    所以可以簡單的理解,重寫就是子類對父類方法的核心進行重新定義。也可以簡單理解成,同一行為(方法)的不同表現形式。(註:方法調用不等於方法執行)在介紹多態的重載和重寫在JVM的實現之前,我們先簡單了解JVM提供的5條方法調用字節碼指令:invokestatic:調用靜態方法。invokespecial:調用實例構造器方法、私有方法和父類方法。
  • 【Java】Java8之流Stream
    1 匹配聚合操作 allMatch:接收一個 Predicate 函數,當流中每個元素都符合該斷言時才返回true,否則返回false noneMatch:接收一個 Predicate 函數,當流中每個元素都不符合該斷言時才返回true,否則返回false anyMatch:接收一個 Predicate 函數,只要流中有一個元素滿足該斷言則返回