通過 HttpUrlConnection獲取遠程計算機上的文件
來自專欄 叫我周小猴假設伺服器B上有一份name.txt文件,這份文件是UTF-8編碼的。我想把它拷貝到我自己的電腦(電腦A)上。該怎麼做?
假設電腦B的ip地址是10.5.23.25。
String queryURL = "http://10.5.23.35/download/name.txt";URL realUrl = new URL(queryURL);URLConnection urlConnection = realUrl.openConnection();HttpURLConnection conn = (HttpURLConnection)urlConnection;conn.setRequestMethod("GET");conn.setRequestProperty("connection","Keep-Alive");conn.setRequestProperty("Charset","UTF-8");try{ conn.connect();} catch(Exception e){ e.printStackTrace();}BufferedReader resultInputStream = null;try{ resultInputStream = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));}StringBuffer result = "";while((line = resultInputStream.readLine()) !=null){ result.append(line);}
注意:InpuStreamReader()是將位元組流轉換為字元流的一個適配器。如果不指定會使用系統的默認編碼。其中linux系統下,默認編碼時utf-8;windows系統下,默認是gbk。但是如果設置eclipse的工作空間的編碼為utf-8,那麼系統的編碼就變為utf-8。查看系統的默認編碼System.getProperty("file.encoding");
在我們這個例子里,如果不設定eclipse的工作空間的編碼為utf-8,那麼就是使用默認的gbk編碼。這樣的話,當位元組流轉字元流的時候就會出錯。所以需要在轉換的時候需要制定編碼格式為utf-8。
推薦閱讀: