java輸入輸出_第1頁(yè)
java輸入輸出_第2頁(yè)
java輸入輸出_第3頁(yè)
java輸入輸出_第4頁(yè)
java輸入輸出_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、java.io package,Java的輸入輸出,JAVA的輸入/輸出,程序經(jīng)常需要從外部獲取數(shù)據(jù)或者向外部輸出數(shù)據(jù)。 位置:磁盤(pán)、網(wǎng)絡(luò)、內(nèi)存、另一個(gè)程序 形式:對(duì)象、字符、文本文件、聲音、圖形 Java中,輸入與輸出(I/O)是通過(guò)流進(jìn)行的。它的特點(diǎn)是數(shù)據(jù)的發(fā)送和獲取都是沿?cái)?shù)據(jù)順序進(jìn)行的。 流模型建立在從某個(gè)數(shù)據(jù)源到數(shù)據(jù)池的數(shù)據(jù)傳輸基礎(chǔ)上(from source to sink),也就是說(shuō)把不同的輸入/輸出源(鍵盤(pán),文件,網(wǎng)絡(luò)連接)等抽象表示為“流”。 兩類基本的流: 輸出流,只能向其寫(xiě)出數(shù)據(jù),而不能從中讀取數(shù)據(jù)。 輸入流,只能從中讀取數(shù)據(jù),而不能向其寫(xiě)出數(shù)據(jù),流編程基礎(chǔ),按流的數(shù)據(jù)單位大

2、小分字符流和字節(jié)流。 字節(jié)流(8位byte流),主要來(lái)傳輸二進(jìn)制數(shù)據(jù):如聲音、圖像、對(duì)象 字符流(16位char),可用來(lái)處理Unicode 舉例:ReadFile1.java,InputStream i args.length; i+ ) 4 System.out.println(args + i + = + argsi); 5 6 7 /運(yùn)行程序TestCommandLine.java java TestCommandLine lisa bily Mr Brown /輸出結(jié)果: args0 = lisa args1 = bily args2 = Mr Brown,java字符編碼,java

3、字符編碼在java應(yīng)用程序特別是web的程序中,經(jīng)常遇到字符的編碼問(wèn)題。為了防止出現(xiàn)亂碼,首先需要了解java是如何處理字符的,這樣就可以有目的地在輸入/輸出環(huán)節(jié)中增加必要的轉(zhuǎn)碼。其次,由于各種服務(wù)器有不同的處理方式,還需要多做實(shí)驗(yàn),確保使用中不出現(xiàn)亂碼。 String str=”中”; byte bytes = str.getBytes(); bytes = str.getBytes(“ISO-8859-1”); ,String str=”中”; 語(yǔ)句:將一個(gè)只含有一個(gè)字符“中”的字符串文字量賦給String類的一個(gè)對(duì)象str, “中”是按照操作系統(tǒng)默認(rèn)編碼方式進(jìn)行編碼,在中文windows

4、系統(tǒng)中通常是“GBK”,“中”在GBK編碼中是0 xD6D0,在將該字符賦給str時(shí),Java會(huì)對(duì)該字符串進(jìn)行編碼轉(zhuǎn)換,即將GBK編碼方式的“中”轉(zhuǎn)換成Unicode編碼方式的“中”,Unicode編碼方式“中”的編碼是0 x4E2D,所以str在程序運(yùn)行期間在內(nèi)存中的二進(jìn)制表示成16進(jìn)制就是0 x4E2D。,byte bytes = str.getBytes(); ,語(yǔ)句:獲得str字符串的二進(jìn)制形式。getBytes(String encoding)方法需要指定編碼方式,表示獲得該字符串在何種編碼方式中的二進(jìn)制形式。此語(yǔ)句中沒(méi)有設(shè)置參數(shù),表示采用操作系統(tǒng)默認(rèn)的編碼方式,即此處獲得的byte

5、s是“中”在GBK編碼中的二進(jìn)制形式,即bytes0=0 xD6, bytes1=0 xD0。,bytes = str.getBytes(“ISO-8859-1”); ,語(yǔ)句:該語(yǔ)句與語(yǔ)句的區(qū)別就是指定了編碼方式,此處指定的是ISO-8859-1,即通常所說(shuō)的Latin-1,該編碼采用8bit對(duì)字符編碼,所以編碼空間中只有256個(gè)字符。該編碼中只包含了基本的ASCII碼和一些擴(kuò)展的其它西歐字符,所以該字符集中不可能包含中文的“中”字,也就是說(shuō)Java虛擬機(jī)無(wú)法在ISO-8859-1編碼集中找到“中”字對(duì)應(yīng)的編碼,針對(duì)這種情況,就只返回一個(gè)問(wèn)號(hào)(?,0 x3f)字符,所以此時(shí)bytes.leng

6、th只有1,且bytes0=0 x3f。,編碼方式的簡(jiǎn)介String序列化成byte數(shù)組或反序列化時(shí)需要選擇正確的編碼方式。如果編碼方式不正確,就會(huì)得到一些0X3F的值。常用的字符編碼方式由ISO8859-1,GB2312,GBK,UTF-8/UTF-16/UTF-32. ISO8859-1用來(lái)編碼拉丁文,它由單字節(jié)(0-255)組成。 GB2312GBK用來(lái)編碼簡(jiǎn)體中文,由單字節(jié)和雙字節(jié)混合組成。最高位為1的字節(jié)和下一個(gè)字節(jié)構(gòu)成一個(gè)漢字,最高位為0的是ASCII碼。 UTF-8/UTF-16/UTF-32是國(guó)際標(biāo)準(zhǔn)Unicode編碼方式。用的最多的是UTF-8,主要是因?yàn)樗趯?duì)拉丁文編碼時(shí)節(jié)

7、約空間。,三、J2SE中相關(guān)的函數(shù)Stringstr=“英”;/取得GB2312編碼的字節(jié)bytebytesGB2312=str.getBytes(“GB2312”);/取得平臺(tái)缺省編碼的字節(jié)(solaris為ISO8859-1,windows為GBK)bytebytesDefault=str.getBytes();/用指定的編碼將字節(jié)轉(zhuǎn)換成字符串String(bytebytes, Charsetcharset) /用指定的編碼從字節(jié)流里面讀取字符InputStreamin=xxx;InputStreamReaderreader=InputStreamReader(in,GB2312);cha

8、raChar=reader.read();,用指定的編碼從字節(jié)流里面讀取字符Input/OutputStreamReader,從該類的構(gòu)造器可以看出(以輸入為例): public InputStreamReader(InputStream in) public InputStreamReader(InputStream in, String charset) /指定字符編碼方式 例如:文件Hello.txt采用了UTF8編碼方式 new InputStreamReader ( new FileInputStream (“Hello.txt”),” UTF8”);,舉例,編寫(xiě)一段java Application程序,從一個(gè)文件in.txt中讀取內(nèi)容,再將它寫(xiě)到文件out.txt中。in.txt采用本地平臺(tái)默認(rèn)的字符編碼,而out.txt采用和本地平臺(tái)不同的字符編碼UTF8。 MyReaderWriter.java,Java編碼,Java字符編碼在內(nèi)部,Java虛擬機(jī)總是操作“單一碼”數(shù)據(jù)。然而,在Java虛擬機(jī)接收數(shù)據(jù)或發(fā)送數(shù)據(jù)時(shí),Java虛擬機(jī)將數(shù)據(jù)轉(zhuǎn)換為其他編碼。、使用任何除java.io.InputStreamReader、java.io.FileReader、java.i

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論