大家好,今天來為大家解答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/ScannerPrintStream可以封裝(包裝)直接與文件交互的節(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ì)大家有所幫助。