第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

FileInputStream fileInput = new FileInputStream("E:\\xuexi\\src.txt");

FileOutputStream fileout = new FileOutputStream("E:\\xuexi\\dest2.txt");

InputStreamReader reader = new InputStreamReader(fileInput, "GBK");

OutputStreamWriter writer=new OutputStreamWriter(fileout,"UTF-8");

int c;

char[]line=new char[10*1024];

while((c=reader.read(line,0, line.length))!=-1){

writer.write(line);

System.out.println(line);

}

fileout.close();

fileInput.close();



----輸出ouputstreamWriter的編碼貌似對(duì)寫(xiě)入文件沒(méi)有影響。。請(qǐng)老師解答。。

正在回答

6 回答

因?yàn)槟愣xwriter的時(shí)候就將它定義成“UTF-8”編碼了,所以他就轉(zhuǎn)換成這個(gè)編碼輸出了。看似沒(méi)影響,其實(shí)這兒輸出文件的編碼已經(jīng)變成utf-8了。輸入文件本身是ANSI編碼,也就是GBK。

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

風(fēng)中過(guò)客

請(qǐng)問(wèn) 是不是這樣理解: 輸入文件本身是ANSI編碼,也就是GBK,所以 1先 new InputStreamReader(fileInput, "GBK"); GBK方式讀取 2 System.out.println(line); 因?yàn)?,所以能夠正常顯示?
2015-05-12 回復(fù) 有任何疑惑可以回復(fù)我~
#2

風(fēng)中過(guò)客

3 接下來(lái) new OutputStreamWriter(fileout,"UTF-8"); 設(shè)置 按UTF-8編碼方式把char流編碼成byte流 4 writer.write(line); 寫(xiě)入到dest2.txt 文件中。 因此,如果要讀取dest2.txt中的編碼, 要按new InputStreamReader(fileInput, "UTF-8"); 才能正常顯示,對(duì)嗎?
2015-05-12 回復(fù) 有任何疑惑可以回復(fù)我~

好吧,我其實(shí)小白了,以后不會(huì)不實(shí)驗(yàn)就亂回答問(wèn)題的。?

正解是:有影響。

我實(shí)驗(yàn)了幾次,以下是實(shí)驗(yàn)步驟:

硬盤(pán)上的src.txt的默認(rèn)編碼是ANSI,所以你在硬盤(pán)上測(cè)試本身就是個(gè)未知數(shù)。

1.先在你項(xiàng)目的src下建立src.txt,輸入幾個(gè)漢字。

2.運(yùn)行測(cè)試代碼

	public?static?void?main(String[]?args)?throws?Exception?{
		
		File?file?=?new?File("src/dest.txt");
		System.out.println(file);
		FileInputStream?fileInput?=?new?FileInputStream("src/src.txt");
		FileOutputStream?fileout?=?new?FileOutputStream(file);
		InputStreamReader?reader?=?new?InputStreamReader(fileInput,?"GBK");
		OutputStreamWriter?writer?=?new?OutputStreamWriter(fileout,"utf-8");
		int?c;???
		char[]?line?=?new?char[10*1024];
		while((c?=?reader.read(line,0,?line.length))!=-1){
			writer.write(line);			
			System.out.println(line);
		}
		fileout.close();
		fileInput.close();
	}

3.refresh項(xiàng)目,會(huì)發(fā)現(xiàn)里面多了dest.txt ?里面是亂碼。

1 回復(fù) 有任何疑惑可以回復(fù)我~

額,我試了下直接寫(xiě)write(line)是可以的。。。 ? 關(guān)于編碼,把GBK和utf-8位置一換就成亂碼了


0 回復(fù) 有任何疑惑可以回復(fù)我~

可能你是代碼敲錯(cuò)的原因吧,沒(méi)有write(byte[])這種用法,編碼應(yīng)該是有影響的。

0 回復(fù) 有任何疑惑可以回復(fù)我~

你好啊,首先我覺(jué)得你有行代碼敲錯(cuò)了,倒數(shù)第5行,應(yīng)該是writer.write(line,0,line.length);

line是一個(gè)字節(jié)數(shù)組,write(int c)是寫(xiě)入單個(gè)字符,write(byte[],offset,length)是把內(nèi)存中的字符數(shù)組,寫(xiě)入到流。另外,回答你的問(wèn)題,它是while循環(huán)的結(jié)束條件,如果等于-1,表示文件,讀取完畢。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

風(fēng)中過(guò)客

char[]line=new char[10*1024]; 字符數(shù)組啊
2015-05-12 回復(fù) 有任何疑惑可以回復(fù)我~

while((c=reader.read(line,0, line.length))!=-1) ? 為什么是不等于-1,??

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

Lemuria

讀到文件的末尾返回值是-1,如果!-1則是還未讀完文件,也就是未到末尾
2014-11-27 回復(fù) 有任何疑惑可以回復(fù)我~
#2

Flames

當(dāng)文件讀完時(shí)返回-1,還沒(méi)讀完返回讀的個(gè)數(shù)
2014-12-22 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)