Java?I/O流之打印流詳細(xì)使用方法教程
打印流

打印流基本使用
打印流:
作用:打印流可以實(shí)現(xiàn)更方便、更高效的打印數(shù)據(jù)到文件中去。打印流一般是指:PrintStream,PrintWriter兩個(gè)類。
可以實(shí)現(xiàn)打印什么數(shù)據(jù)就是什么數(shù)據(jù),例如打印整數(shù)97寫出去就是97,打印boolean的true,寫出去就是true。
打印流PrintStream構(gòu)造器如下:
| 構(gòu)造器 | 說(shuō)明 |
|---|---|
| PrintStream(OutputStream os) | 打印流直接通向字節(jié)輸出流管道 |
| PrintStream(File f) | 打印流直接通向文件對(duì)象 |
| PrintStream(String filepath) | 打印流直接通向文件路徑 |
示例代碼
public static void main(String[] args) throws Exception {
// 方式一: 打印流通向字節(jié)輸出流管道
PrintStream ps1 = new PrintStream(new FileOutputStream("/Users/chenyq/Documents/test.txt"));
// 方式二: 打印流通向文件對(duì)象
PrintStream ps2 = new PrintStream(new File("/Users/chenyq/Documents/test.txt"));
// 方式三: 打印流通向文件路徑
PrintStream ps3 = new PrintStream("/Users/chenyq/Documents/test.txt");
}
打印流PrintStream方法如下:
| 方法 | 說(shuō)明 |
|---|---|
| print(Xxx xx) | 打印任意類型的數(shù)據(jù)出去(不換行) |
| println(Xxx xx) | 打印任意類型的數(shù)據(jù)出去(換行) |
演示代碼
public static void main(String[] args) throws Exception {
PrintStream ps = new PrintStream(new FileOutputStream("/Users/chenyq/Documents/test.txt"));
// 打印流方法
ps.println(97);
ps.println("aaa");
ps.println(123);
ps.println('我');
ps.println(true);
// 關(guān)閉流
ps.close();
}
上面代碼打印到文件中的內(nèi)容如下:

打印流PrintWrite構(gòu)造器如下
| 構(gòu)造器 | 說(shuō)明 |
|---|---|
| PrintWriter(OutputStream os) | 打印流直接通向字節(jié)輸出流管道 |
| PrintWriter (Writer w) | 打印流直接通向字符輸出流管道 |
| PrintWriter (File f) | 打印流直接通向文件對(duì)象 |
| PrintWriter (String filepath) | 打印流直接通向文件路徑 |
打印流PrintStream方法:
| 方法 | 說(shuō)明 |
|---|---|
| print(Xxx xx) | 打印任意類型的數(shù)據(jù)出去(換行) |
| println(Xxx xx) | 打印任意類型的數(shù)據(jù)出去(不換行) |
演示代碼:
PrintWrite和PrintPrintStream在打印的使用上并無(wú)區(qū)別
public static void main(String[] args) throws Exception {
PrintWriter pw = new PrintWriter(new FileOutputStream("/Users/chenyq/Documents/test.txt"));
// 打印流方法
pw.println(97);
pw.println("aaa");
pw.println(123);
pw.println('我');
pw.println(false);
// 關(guān)閉流
pw.close();
}
既然PrintStream和PrintWrite在打印上沒(méi)有區(qū)別, 那這兩個(gè)類的區(qū)別在哪里?
打印數(shù)據(jù)功能上是一模一樣的,都是使用方便,性能高效(核心優(yōu)勢(shì))
PrintStream繼承自字節(jié)輸出流OutputStream,支持寫字節(jié)數(shù)據(jù)的方法。
PrintWriter繼承自字符輸出流Writer,支持寫字符數(shù)據(jù)出去。
public static void main(String[] args) throws Exception {
PrintStream ps = new PrintStream(new FileOutputStream("/Users/chenyq/Documents/test.txt"));
// PrintStream寫字節(jié)數(shù)據(jù)
ps.write("我愛(ài)學(xué)習(xí)".getBytes());
}
public static void main(String[] args) throws Exception {
PrintWriter pw = new PrintWriter(new FileOutputStream("/Users/chenyq/Documents/test.txt"));
// PrintWrite寫字符數(shù)據(jù)
pw.write("我愛(ài)學(xué)習(xí)");
}
但是我們一般使用打印流, 都是打印數(shù)據(jù)到文件中去;
使用打印流我們基本不會(huì)用來(lái)寫數(shù)據(jù), 因?yàn)閷憯?shù)據(jù)我們直接使用字符輸出流和字節(jié)輸出流更好
使用打印流的小細(xì)節(jié), 我們可以發(fā)現(xiàn), 打印流默認(rèn)也是覆蓋管道, 打印的數(shù)據(jù)會(huì)覆蓋原數(shù)據(jù)
如果我們想要打印數(shù)據(jù)為追加數(shù)據(jù), 我們要在低級(jí)管道中開啟追加模式, 打印流的過(guò)早其中沒(méi)有提供追加數(shù)據(jù)的構(gòu)造器
public static void main(String[] args) throws Exception {
// 在原始字符輸出流開啟追加模式
PrintWriter pw = new PrintWriter(new FileOutputStream("/Users/chenyq/Documents/test.txt", true));
}
輸出語(yǔ)句重定向
輸出語(yǔ)句重定向(了解)
屬于打印流的一種應(yīng)用,可以把輸出語(yǔ)句
System.out.println();的打印位置改到文件當(dāng)中。例如: 在項(xiàng)目的開發(fā)階段我們是在控制臺(tái)打印調(diào)試的, 我們希望項(xiàng)目上線后將輸出語(yǔ)句打印到文件當(dāng)中
public static void main(String[] args) throws Exception {
PrintStream ps = new PrintStream("/Users/chenyq/Documents/test.txt");
// 改變輸出語(yǔ)句的位置(重定向), 將輸出語(yǔ)句輸出到文件當(dāng)中
System.setOut(ps);
System.out.println("aaa");
System.out.println(97);
System.out.println(123);
System.out.println('我');
}
總結(jié)
到此這篇關(guān)于Java IO流打印流詳細(xì)使用的文章就介紹到這了,更多相關(guān)Java IO流打印流使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
application作用域?qū)崿F(xiàn)用戶登錄擠掉之前登錄用戶代碼
這篇文章主要介紹了application作用域?qū)崿F(xiàn)用戶登錄擠掉之前登錄用戶代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
java 注解實(shí)現(xiàn)一個(gè)可配置線程池的方法示例
這篇文章主要介紹了java 注解實(shí)現(xiàn)一個(gè)可配置線程池的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Java Comparable 和 Comparator 的詳解及區(qū)別
這篇文章主要介紹了Java Comparable 和 Comparator 的詳解及區(qū)別的相關(guān)資料,Comparable 自然排序和Comparator 定制排序的實(shí)例,需要的朋友可以參考下2016-12-12
SpringBoot中@Configuration和@Bean和@Component相同點(diǎn)詳解
這篇文章主要介紹了SpringBoot中@Configuration和@Bean和@Component相同點(diǎn)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
詳解SpringBoot 多線程處理任務(wù) 無(wú)法@Autowired注入bean問(wèn)題解決
這篇文章主要介紹了詳解SpringBoot 多線程處理任務(wù) 無(wú)法@Autowired注入bean問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
一次java異步任務(wù)的實(shí)戰(zhàn)記錄
最近做項(xiàng)目的時(shí)候遇到了一個(gè)小問(wèn)題,從前臺(tái)提交到服務(wù)端A,A調(diào)用服務(wù)端B處理超時(shí),下面這篇文章主要給大家介紹了一次java異步任務(wù)的實(shí)戰(zhàn)記錄,需要的朋友可以參考下2022-05-05
Java中byte輸出write到文件的實(shí)現(xiàn)方法講解
今天小編就為大家分享一篇關(guān)于Java中byte輸出write到文件的實(shí)現(xiàn)方法講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03

