Java IO學習筆記六

来源:http://www.cnblogs.com/Chenjiabing/archive/2017/05/26/6906784.html
-Advertisement-
Play Games

列印流 在整個 包中,列印流是輸出信息最方便的類,主要包含 位元組列印流 ( )和 字元列印流 ( )。列印流提供了非常方便的列印功能,可以列印任何的數據類型,例如:小數、整數、字元串等等,相對於前面學習的幾個文件的操作來說,這裡的列印流是最簡便的一個類了 PrintStream 主要功能是格式化的將 ...


列印流

  • 在整個IO包中,列印流是輸出信息最方便的類,主要包含位元組列印流PrintStream)和字元列印流PrintWrite)。列印流提供了非常方便的列印功能,可以列印任何的數據類型,例如:小數、整數、字元串等等,相對於前面學習的幾個文件的操作來說,這裡的列印流是最簡便的一個類了

PrintStream

  • 主要功能是格式化的將內容寫入文件,並不是列印在控制臺上
  • PrintStream最大的好處就是可以格式化的輸出,相信學過c的朋友都知道prinf這格式化輸出函數,這裡的PrintStream實現了更加簡單的格式化輸出,不需要使用什麼%d,%f了,只需要都是用%s即可,這個很像python
  • PrintStream 列印的所有字元都使用平臺的預設字元編碼轉換為位元組。在需要寫入字元而不是寫入位元組的情況下,應該使用 PrintWriter類。

構造函數

  • PrintStream(File file) 創建具有指定文件且不帶自動行刷新的新列印流。
  • PrintStream(OutputStream out) 創建新的列印流。
  • PrintStream(OutputStream out, boolean autoFlush) 創建新的列印流,並且設置自動刷新
  • PrintStream(String fileName) 創建具有指定文件名稱且不帶自動行刷新的新列印流。
File file_2=new File("/tmp"+File.separator+"test"+File.separator+"test.txt");
PrintStream printStream=new PrintStream(file_2);  //直接使用File
PrintStream printStream=new PrintStream(new FileOutputStream(file_2));  //使用OutputStream的子類FileOutputStream

常用的函數

  • PrintStream append(char c) 在此輸入流的後面追加字元。
  • PrintStream append(CharSequence csq) 將指定字元序列添加到此輸出流。
  • PrintStream append(CharSequence csq, int start, int end) 將指定字元序列的子序列添加到此輸出流。
  • print() 列印常用的數據類型,比如String,char,int ,double,float,boolean,long,short
  • println() 列印常用的數據類型,但是帶有換行符
  • printf(String format, Object... args) 使用指定格式字元串和參數將格式化的字元串寫入此輸出流的便捷方法。
  • format(String format, Object... args) 使用指定格式字元串和參數將格式化字元串寫入此輸出流中。
  • close()
  • flush()

實例

 package IO;


import java.io.*;

/**
 * Created by chenjiabing on 17-5-25.
 */
 
 
/**test.txt文件中的結果如下:
 陳加兵
 2299.9
 姓名:陳加兵,n年齡:22,成績:99.9
 姓名:陳加兵,n年齡:22,成績:99.9
 c
 chenjiabi
 */

public class demo9 {
    public static void main(String[] args) {
        PrintStream printStream = null;
        File file_1 = new File("/tmp" + File.separator + "test");
        File file_2 = new File("/tmp" + File.separator + "test" + File.separator + "test.txt");
        if (!file_1.exists()) {
            file_1.mkdir();
            System.out.println("文件創建成功");
        }

        try {
//            PrintStream printStream=new PrintStream(file_2);
            printStream = new PrintStream(new FileOutputStream(file_2));
            String name = "陳加兵";
            int age = 22;
            float grade = 99.9f;

            printStream.println(name);//println()

            printStream.print(age);//print()

            printStream.println(grade);//print()

            printStream.format("姓名:%s,n年齡:%s,成績:%s%s", name, age, grade, "\n");//format()

            printStream.printf("姓名:%s,n年齡:%s,成績:%s%s", name, age, grade, "\n");

            printStream.append('c');   //append
            printStream.append("\nchenjiabing",0,10);  //append
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (printStream != null) {
                printStream.flush();
                printStream.close();
            }
        }


    }
}

PrintWriter

  • 繼承Writer,主要針對的是字元流的操作
  • 向文本輸出流列印對象的格式化表示形式。此類實現在 PrintStream中的所有 print 方法。它不包含用於寫入原始位元組的方法,對於這些位元組,程式應該使用未編碼的位元組流進行寫入。
  • PrintStream 類不同,如果啟用了自動刷新,則只有在調用 printlnprintfformat 的其中一個方法時才可能完成此操作,而不是每當正好輸出換行符時才完成。這些方法使用平臺自有的行分隔符概念,而不是換行符。
  • 此類中的方法不會拋出 I/O 異常,儘管其某些構造方法可能拋出異常。客戶端可能會查詢調用 checkError() 是否出現錯誤。

構造函數

  • PrintWriter(File file) 使用指定文件創建不具有自動行刷新的新 PrintWriter
  • PrintWriter(OutputStream out) 根據現有的 OutputStream 創建不帶自動行刷新的新 PrintWriter
  • PrintWriter(OutputStream out, boolean autoFlush) 通過現有的 OutputStream 創建新的 PrintWriter
  • PrintWriter(String fileName) 創建具有指定文件名稱且不帶自動行刷新的新 PrintWriter

常用函數

這裡的常用到的函數和PrintStream的差不多就不再詳細的列出來了,詳情請看幫助文檔

實例

package IO;

import java.io.*;

/**
 * Created by chenjiabing on 17-5-25.
 */
public class demo10 {
    public static void main(String[] args)
    {
        PrintWriter printWriter=null;
        File file=new File("/tmp"+File.separator+"test"+File.separator+"file.txt");
        try {
            printWriter=new PrintWriter(new FileOutputStream(file));
            printWriter.println("chenjiabing");
            printWriter.println("陳加兵");
        }catch (IOException e)
        {
            e.printStackTrace();
        }finally {
                if(printWriter!=null)
                {
                    printWriter.close();
                }
        }

    }
}

參考文章


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、任務的取消於關閉 1、中斷Thread 1.每個線程都有一個boolean類型的中斷狀態。true則是中斷狀態中 interrupt:發出中斷請求;isInterrupt:返回中斷狀態;interrupted:清除中斷狀態 2.JVM中的阻塞方法會檢查線程中斷狀態,其響應方法為:清除中斷狀態,拋 ...
  • System對IO的支持 是系統的類,其中的方法都是在控制台的輸入和輸出,但是通過重定向也是可以對文件的輸入輸出 中定義了標準輸入、標準輸出和錯誤輸出流,定義如下: 1. “標準”錯誤輸出流。 2. “標準”輸入流。 3. “標準”輸出流。 從上面的定義可以知道這裡的返回值都是位元組的輸入和輸出流,因 ...
  • 本書通篇都是以情景對話的形式,用多個小故事或編程示例來組織講解GoF(設計模式的經典名著——Design Patterns:Elements of Reusable Object-Oriented Software,中譯本名為《設計模式——可復用面向對象軟體的基礎》的四位作者Erich Gamma、 ...
  • 控制套接字的行為(如修改緩衝區的大小)。 int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen); int setsockopt(int sockfd,int level,int optname, ...
  • 作者Brett Slatkin是 Google公司高級軟體工程師。他是Google消費者調查項目的工程主管及聯合創始人,曾從事Google App Engine的Python基礎架構工作,並利用Python來管理眾多的Google伺服器。Slatkin也是PubSubHubbub協議的聯合創始人,還 ...
  • “註解”這個詞,可謂是在Java編程中出鏡率比較高,而且也是一個老生常談的話題。我們之前在聊Spring相關的東西時,註解是無處不在,之前我們簡單的聊過一些“註解”的相關內容,比如在Spring中是如何進行“註解”組合的。因為註解在Java編程中還是比較重要的,所以我們今天的博客就把註解的東西給系統 ...
  • 問題:Firemonkey Android 平臺顯示斜粗體文字時,文字右方會有顯示不全的問題。 修正代碼: 請將 FMX.FontGlyphs.Android.pas 複製到自己的工程目錄下,再修改如下代碼: 修正效果: ...
  • 數據源連接池配置 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...