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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

控制台输出到txt

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 控制台输出到txt 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//PrintStream 為其他輸出流添加了功能,使它們能夠方便地打印各種數據值表示形式。 //PrintStream不同于PrintWriter,PrintStream輸出的是字節內容。 //public PrintStream(OutputStream?out)創建新的打印流。 PrintStream ps=new PrintStream(new FileOutputStream(new File("文件名.txt"),true));//第二個參數是免覆蓋 免去用inputstream。fileinputstream,bufferedwriter(字節,字符,緩沖,數組,數據,文件,對象。。。。。。流).....的創建. 直接將本該從控制臺輸出的東西輸到文件里。感覺很方便 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、(以下來自http://hi.baidu.com/shdren09/item/8b1d2631e78b7abf623aff3f

PrintWriter和PrintStream的區別與聯系

PrintStream類和PrintWriter類?

PrintStream主要操作byte流,而PrintWriter用來操作字符流。讀取文本文件時一般用后者。

java的一個字符(char)是16bit的,一個BYTE是8bit的?
PrintStrean是寫入一串8bit的數據的。?
PrintWriter是寫入一串16bit的數據的。?
String缺省是用UNICODE編碼,是16bit的。因此用PrintWriter寫入的字符串,跨平臺性好一些吧。?
PrintStream的可能會出現字符集亂碼吧。

PrintStream是用來操作byte,?
PrintWriter是用來操作Unicode,?
一般需要處理中文時用PrintWriter好了

Stream用于二進制文件(非文本)?
Writer/Reader用于文本文件(雖然也是二進制,不過是按照一定的字符編碼規則,不像前者)?
當然Stream也可用于文本,只不過比writer/reader來的麻煩?

PrintStream主要操作byte流,而PrintWriter用來操作字符流。讀取文本文件時一般用后者。

?

---------------------------------------------------

?java 輸出流中的PrintStream 和 PrintWriter有什么區別,好像很多場合都能混用
比如用于網絡間通信,發送消息時,可用PrintStream 也可用 PrintWriter
??? eg:
???????? Socket client;
????????? PrintStream output = new PrintStream(client.getOutputStream());
????????? output.println("aaa");
????????? output.flush();
??????? 把上例中的 PrintStream 換成 PrintWriter效果是一樣的。Java I/O流分為兩類,字節流和字符流。字節流是指InputStream/OutputStream及其子類,字符流是指Reader/Writer及其子類。這兩類I/O流的class hierarchy基本上是對等的,InputStreamReader/OutputStreamWriter是InputStream/OutputStream和Reader/Writer之間的橋梁。

???????? PrintStream是OutputStream的子類,PrintWriter是Writer的子類,兩者處于對等的位置上,所以它們的API是非常相似的。PrintWriter實現了PritnStream的所有print方法。對于PrintStream,所有println方法都在內部調用相應的print方法,比如println(char x)的方法體就是調用print(x);再寫入一個平臺相關的換行符。PrintStream構建時會在內部new一個BufferedWriter,所有print方法都在內部調用這個Writer的write方法(write(String)或write(char[]))——對于print(char[]),直接調用write(char[]);對于其他的print方法,先用String.valueOf獲得參數的字符串表示,然后調用write(String)。
???????? 對于PrintWriter,所有println方法也都在內部調用print方法,print方法調用write方法。傳入OutputStream時,PrintWriter會在內部構造一個BufferedWriter;而傳入Writer時,PrintStream內部直接使用該Writer,此時PrintWriter是否進行了緩沖全看該Writer。
所以,對于使用print系列方法的場合,二者沒什么區別。

???????? 但是,PrintStream是字節流,它有處理raw byte的方法,write(int)和write(byte[],int,int);PrintWriter是字符流,它沒有處理raw byte的方法。PrintStream和PrintWriter的auto flushing機制有點不同,前者在輸出byte數組、調用println方法、輸出換行符或者byte值10(即\n)時自動調用flush方法,后者僅在調用println方法時發生auto flushing。
System.out是PrintStream。其實這些東西API文檔中都有。

--------------------------------------------------------

?

  PrintStream類是過濾器類中一個不可忽視的成員,最基本的標準輸出就要借助于它——我們常用的System.out變量就是PrintStream實例。與之對應的字符流類是PrintWriter類。?
  PrintStream有兩個構造函數(在新版API中已標記為過時):?
  ■public PrintStream(OutputStream out)?
  ■public PrintStream(OutputStream out,boolean autoFlush)?
其中,autoFlush置為true時,每當輸出遇到換行符,緩沖區的內容就被強制全部輸出,如同調用了一次flush()。但要注意,如果沒遇到換行符,還是會有數據“憋”在緩沖區里。?
  方法(已熟悉的就不解釋):?
  ■public void write(int b)?
  ■public void write(byte b,int offset,int length)?
  ■public void flush()?
  ■public void close()?
  ■public void print(Object obj)?
  這個方法功能是 非常強大的,它可以輸出任何對象,而不必另加說明。此外print()方法有許多重載形式,即有多種參數。它們是字符串(String)、字符數組 (char[])、字符(char)、整數(int)、長整數(long)、浮點數(float)、雙精度浮點數(double)、布爾值 (boolean)。其中,輸出多個數單位的print()方法(也就是指參數為String和char[]的)是同步(synchronized)方 法。?
  ■public void println()輸出一個換行符。?
  ■public synchronized void println(Object obj)?
  println()方法有9個重載形式,幾乎就是print()方法的翻版。唯一的區別在于println()方法都是同步的。?
  ■public boolean checkError()?
  檢查輸出過程中有什么錯誤,如有,返回true值。只要輸出流中出現一次錯誤,則出錯后的任意對checkError()的調用均會返回真值。?
  下面介紹PrintWriter類。?
  如同第二節中所說,PrintWriter是JDK1.1版增加了與字節流I/O相對應的字符流I/O。但是,為了保持兼容性,原先的類幾乎沒有改 動。再加之調試的需要,PrintStream類被保留,并且System類中的成員變量out、err仍作為它的對象。然而,PrintWriter用 于大多數輸出比PrintStream更為合適。因此1.1版的API中建議新開發的代碼使用PrintWriter類,并將 PrintStream類的兩個構造函數標記為過時。這樣,雖然使用System.out輸出不會產生問題,在程序中創建新的PrintStream對象 時卻會產生編譯時的警告。?
  PrintWriter類與PrintStream類的方法是對應的。有一個不同之外需提請讀者注意,就是當前者的自動清空緩沖區的功能被使能時(構 造函數中autoFlush置為true),僅當println()方法被調用時才自動清緩沖區,而不是像PrintStream一樣遇到一個換行符就清 緩沖。?

PrintStream,它可以將Java的基本資料型態等資料,直接轉換為系統預設編碼下對應的字元,再輸出至OutputStream中,而這邊要介 紹的 PrintWriter其功能上與PrintStream類似,除了接受OutputStream之外,它還可以接受Writer物件作為輸出的對象,當 您原先是使用Writer物件在作處理 ,而現在想要套用println()之類的方法時,使用PrintWriter會是比較方便的作法。?

下面這個程式顯示了PrintStream與PrintWriter兩個物件在處理相同輸出目的時的作法,程式將會在熒幕上顯示 "簡體中文" 四個字元:?

StreamWriterDemo.java?
package onlyfun.caterpillar; import java.io.*;?
public class StreamWriterDemo?
{

?public static void main(String[] args)? {?

try  {

byte[] sim = {(byte)0xbc, (byte)0xf2, // 簡?
(byte)0xcc, (byte)0xe5, // 體?
(byte)0xd6, (byte)0xd0, // 中?
(byte)0xce, (byte)0xc4}; // 文?
InputStreamReader inputStreamReader = new InputStreamReader(new ByteArrayInputStream(sim), "GB2312");?
PrintWriter printWriter =new PrintWriter(new OutputStreamWriter(System.out, "GB2312"));?
PrintStream printStream =new PrintStream(System.out, true, "GB2312");?
int in;?
while((in = inputStreamReader.read()) != -1)? {

printWriter.println((char)in);?

printStream.println((char)in);

}?
inputStreamReader.close();?
printWriter.close();?
printStream.close();?

}?
catch(ArrayIndexOutOfBoundsException e)? {

?e.printStackTrace();

?}?
catch(IOException e) {

?e.printStackTrace();?

}?

}

}

轉載于:https://www.cnblogs.com/8335IT/p/3652003.html

總結

以上是生活随笔為你收集整理的控制台输出到txt的全部內容,希望文章能夠幫你解決所遇到的問題。

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