Java中PrintWriter使用方法介紹
簡介
PrintWriter 與 PrintStream 相同。PrintStream 只能接字節(jié)流,而 PrintWriter 既能接字節(jié)流又能接字符流。
PrintStream 最終輸出的總是 byte 數(shù)據(jù),而 PrintWriter 則是擴(kuò)展了 Writer 接口,它的 print()/println() 方法最終輸出的是 char 數(shù)據(jù)。兩者的使用方法幾乎是一模一樣的。
文本文件的轉(zhuǎn)碼復(fù)制
public class Main {
public static void main(String[] args) {
System.out.println("輸入源文件");
String s = new Scanner(System.in).nextLine();
File from = new File(s);
if (!from.isFile()) {
System.out.println("請(qǐng)輸入正確的文件路徑");
return;
}
System.out.println("輸入目標(biāo)文件");
s = new Scanner(System.in).nextLine();
File to = new File(s);
if (to.isDirectory()) {
System.out.println("請(qǐng)輸入具體的文件路徑,不是目錄路徑");
return;
}
System.out.println("輸入原文件字符編碼");
String fromCharset = new Scanner(System.in).nextLine();
System.out.println("輸入目標(biāo)文件字符編碼");
String toCharset = new Scanner(System.in).nextLine();
try {
copy(from, to, fromCharset, toCharset);
System.out.println("復(fù)制成功");
} catch (Exception e) {
System.out.println("復(fù)制失敗");
}
}
private static void copy(File from, File to, String fromCharset, String toCharset) throws Exception {
// TODO Auto-generated method stub
/**
* BufferedReader
* InputStreamReader,fromCharset
* FileInputStream
* from
*
* PrintWriter
* OutputStreamWriter,toCharset
* FileOutputStream
* to
*
* 循環(huán)按行讀寫
*
* */
BufferedReader in = new BufferedReader(
new InputStreamReader(
new FileInputStream(from), fromCharset));
PrintWriter out = new PrintWriter(
new OutputStreamWriter(
new FileOutputStream(to), toCharset));
String line;
while ((line = in.readLine()) != null) {
out.println(line);
}
in.close();
out.close();
}
}運(yùn)行程序

f7 內(nèi)容為:

轉(zhuǎn)為十六進(jìn)制查看。原來編碼為 UTF-8,英文單字節(jié),中文3字節(jié)

f7copy 內(nèi)容:

轉(zhuǎn)為十六進(jìn)制查看。現(xiàn)在編碼為 GBK,英文單字節(jié),中文雙字節(jié),增加了換行符

到此這篇關(guān)于Java中PrintWriter使用方法介紹的文章就介紹到這了,更多相關(guān)Java PrintWriter內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA創(chuàng)建SpringBoot父子Module項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了IDEA創(chuàng)建SpringBoot父子Module項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析(經(jīng)典)
這篇文章主要介紹了Java編程之jdk1.4,jdk1.5和jdk1.6的區(qū)別分析,結(jié)合實(shí)例形式較為詳細(xì)的分析說明了jdk1.4,jdk1.5和jdk1.6版本的使用區(qū)別,需要的朋友可以參考下2015-12-12
SpringBoot中實(shí)現(xiàn)訂單30分鐘自動(dòng)取消的三種方案分享
在電商和其他涉及到在線支付的應(yīng)用中,通常需要實(shí)現(xiàn)一個(gè)功能:如果用戶在生成訂單后的一定時(shí)間內(nèi)未完成支付,系統(tǒng)將自動(dòng)取消該訂單,本文將詳細(xì)介紹基于Spring Boot框架實(shí)現(xiàn)訂單30分鐘內(nèi)未支付自動(dòng)取消的幾種方案,并提供實(shí)例代碼,需要的朋友可以參考下2023-10-10
官方詳解HDFS?Balancer工具主要調(diào)優(yōu)參數(shù)
這篇文章主要為大家介紹了HDFS?Balancer工具主要調(diào)優(yōu)參數(shù)的?官方詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
JAVAEE Filter 過濾器設(shè)置是否緩存實(shí)例詳解
網(wǎng)頁中,每次的客戶端訪問服務(wù)器,有部分不用重復(fù)請(qǐng)求的,這樣可以減輕服務(wù)器的工作量。那么如何設(shè)置客戶端是否都緩存呢?接下來通過本文給大家介紹JAVAEE Filter 過濾器設(shè)置是否緩存的實(shí)例,感興趣的朋友一起學(xué)習(xí)吧2016-05-05
Struts2實(shí)現(xiàn)文件上傳功能實(shí)例解析
這篇文章主要介紹了Struts2實(shí)現(xiàn)文件上傳功能實(shí)例解析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
Java實(shí)現(xiàn)lucene搜索功能的方法(推薦)
下面小編就為大家?guī)硪黄狫ava實(shí)現(xiàn)lucene搜索功能的方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12

