- N +

inputstreamreader亂碼 inputstream設(shè)置編碼

大家好,今天來為大家解答inputstreamreader亂碼這個(gè)問題的一些問題點(diǎn),包括inputstream設(shè)置編碼也一樣很多人還不知道,因此呢,今天就來為大家分析分析,現(xiàn)在讓我們一起來看看吧!如果解決了您的問題,還望您關(guān)注下本站哦,謝謝~

Java中IO流分為幾種

什么是IOI是Input,O是Output,IO就是輸入與輸出,Java的輸入機(jī)制允許程序讀取外部數(shù)據(jù),輸出機(jī)制允許程序?qū)⒊绦驍?shù)據(jù)輸出到外部存儲(chǔ)設(shè)備IO常用類文件流:FileInputStream/FileOutputStream,F(xiàn)ileReader/FileWriter這四個(gè)類是專門操作文件流的,用法高度相似,區(qū)別在于前面兩個(gè)是操作字節(jié)流,后面兩個(gè)是操作字符流。它們都會(huì)直接操作文件流,直接與OS底層交互。因此他們也被稱為節(jié)點(diǎn)流。

注意使用這幾個(gè)流的對(duì)象之后,需要關(guān)閉流對(duì)象,因?yàn)閖ava垃圾回收器不會(huì)主動(dòng)回收。不過在Java7之后,可以在try()括號(hào)中打開流,最后程序會(huì)自動(dòng)關(guān)閉流對(duì)象,不再需要顯示地close

包裝流:PrintStream/PrintWriter/Scanner

PrintStream可以封裝(包裝)直接與文件交互的節(jié)點(diǎn)流對(duì)象OutputStream,使得編程人員可以忽略設(shè)備底層的差異,進(jìn)行一致的IO操作。因此這種流也稱為處理流或者包裝流。

PrintWriter除了可以包裝字節(jié)流OutputStream之外,還能包裝字符流Writer

Scanner可以包裝鍵盤輸入,方便地將鍵盤輸入的內(nèi)容轉(zhuǎn)換成我們想要的數(shù)據(jù)類型

字符串流:StringReader/StringWriter這兩個(gè)操作的是專門操作String字符串的流,其中StringReader能從String中方便地讀取數(shù)據(jù)并保存到char數(shù)組,而StringWriter則將字符串類型的數(shù)據(jù)寫入到StringBuffer中轉(zhuǎn)換流:InputStreamReader/OutputStreamReader這兩個(gè)類可以將字節(jié)流轉(zhuǎn)換成字符流,被稱為字節(jié)流與字符流之間的橋梁。我們經(jīng)常在讀取鍵盤輸入(System.in)或網(wǎng)絡(luò)通信的時(shí)候,需要使用這兩個(gè)類緩沖流:BufferedReader/BufferedWriter,BufferedInputStream/BufferedOutputStream

經(jīng)過Buffered處理過的輸入流將會(huì)從一個(gè)buffer內(nèi)存區(qū)域讀取數(shù)據(jù),本地API只會(huì)在buffer空了之后才會(huì)被調(diào)用(可能一次調(diào)用會(huì)填充很多數(shù)據(jù)進(jìn)buffer)。

經(jīng)過Buffered處理過的輸出流將會(huì)把數(shù)據(jù)寫入到buffer中,本地API只會(huì)在buffer滿了之后才會(huì)被調(diào)用。

enterprisearchitect生成java后亂碼

BufferedReadertxtRead=newBufferedReader(newFileReader("test.txt"));讀取tests.txt的時(shí)候就是亂碼。解決方法:把上面那句改成這樣就ok了BufferedReadertxtRead=newBufferedReader(newInputStreamReader(newFileInputStream("test.txt"),"gbk"));

extjs怎么獲取當(dāng)前mac地址

packagecom.alpha.test;

importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.InputStreamReader;

importjava.io.LineNumberReader;

publicclassGetMac{

/**

*java獲取客戶端網(wǎng)卡的MAC地址

*

*@paramargs

*/

publicstaticvoidmain(String[]args){

GetMacget=newGetMac();

System.out.println("1="+get.getMAC());

System.out.println("2="+get.getMAC("127.0.0.1"));

}

//1.獲取客戶端ip地址(這個(gè)必須從客戶端傳到后臺(tái)):

//jsp頁面下,很簡(jiǎn)單,request.getRemoteAddr();

//因?yàn)橄到y(tǒng)的VIew層是用JSF來實(shí)現(xiàn)的,因此頁面上沒法直接獲得類似request,在bean里做了個(gè)強(qiáng)制轉(zhuǎn)換

//publicStringgetMyIP(){

//try{

//FacesContextfc=FacesContext.getCurrentInstance();

//HttpServletRequestrequest=(HttpServletRequest)fc

//.getExternalContext().getRequest();

//returnrequest.getRemoteAddr();

//}catch(Exceptione){

//e.printStackTrace();

//}

//return"";

//}

//2.獲取客戶端mac地址

//調(diào)用window的命令,在后臺(tái)Bean里實(shí)現(xiàn)通過ip來獲取mac地址。方法如下:

//運(yùn)行速度【快】

publicStringgetMAC(){

Stringmac=null;

try{

Processpro=Runtime.getRuntime().exec("cmd.exe/cipconfig/all");

InputStreamis=pro.getInputStream();

BufferedReaderbr=newBufferedReader(newInputStreamReader(is));

Stringmessage=br.readLine();

intindex=-1;

while(message!=null){

if((index=message.indexOf("PhysicalAddress"))>0){

mac=message.substring(index+36).trim();

break;

}

message=br.readLine();

}

System.out.println(mac);

br.close();

pro.destroy();

}catch(IOExceptione){

System.out.println("Can'tgetmacaddress!");

returnnull;

}

returnmac;

}

//運(yùn)行速度【慢】

publicStringgetMAC(Stringip){

Stringstr=null;

StringmacAddress=null;

try{

Processp=Runtime.getRuntime().exec("nbtstat-A"+ip);

InputStreamReaderir=newInputStreamReader(p.getInputStream());

LineNumberReaderinput=newLineNumberReader(ir);

for(;true;){

str=input.readLine();

if(str!=null){

if(str.indexOf("MACAddress")>1){

macAddress=str

.substring(str.indexOf("MACAddress")+14);

break;

}

}

}

}catch(IOExceptione){

e.printStackTrace(System.out);

returnnull;

}

returnmacAddress;

}

}

idea中fileinputstream如何寫入

"reader"這個(gè)變量是接收系統(tǒng)輸入的字符串,而且byte數(shù)組沒有賦值。且局部變量必須有初始值。 //輸出流 FileOutputStreamfos=newFileOutputStream("file.txt"); BufferedInputStreamreader=newBufferedInputStream(System.in); byte[]bt=newbyte[256]; fos.write(reader.read(bt)); reader.close(); fos.flush(); fos.close(); System.out.println(bt[0]);

inputstream怎么轉(zhuǎn)換成字節(jié)數(shù)組

Java中的I/O機(jī)制都是基于數(shù)據(jù)流進(jìn)行輸入和輸出的,將流轉(zhuǎn)換成字節(jié)數(shù)組保存下來是數(shù)據(jù)流傳輸必不可少的一部分。轉(zhuǎn)換的代碼如下(在具體場(chǎng)景下需要處理流的關(guān)閉問題)

publicstaticbyte[]toByteArray(InputStreaminput)throwsIOException{

ByteArrayOutputStreamoutput=newByteArrayOutputStream();

byte[]buffer=newbyte[1024*4];

intn=0;

while(-1!=(n=input.read(buffer))){

output.write(buffer,0,n);

}

returnoutput.toByteArray();

}

關(guān)于inputstreamreader亂碼,inputstream設(shè)置編碼的介紹到此結(jié)束,希望對(duì)大家有所幫助。

返回列表
上一篇:
下一篇: