2014-05-02 42 views
-3

嗨,我想讀一個URL,我得到一個字符串,我在控制檯上打印該字符串,但我想讀取該URL作爲一個字節的字節,我沒有得到如何讀取如何逐字節讀取url?

這裏是我ReadTextFromURL

import java.io.BufferedReader; 
import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.MalformedURLException; 
import java.net.URL; 

public class ReadTextFromURL { 
    public static void main(String[] args) { 
     try { 

      URL url = new URL("http://122.160.81.37:8080/mandim/MarketWise?m=agra"); 
      ByteArrayOutputStream bais = new ByteArrayOutputStream(); 
      BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
      String line; 
      int lin; 
      while ((lin = in.read()) != -1) { 
       System.out.println(lin); 
      } 
      in.close(); 
     } catch (MalformedURLException e) { 
      System.out.println("Malformed URL: " + e.getMessage()); 
     }catch (IOException e) { 
      System.out.println("I/O Error: " + e.getMessage()); 
     } 
    } 
} 

所需的輸出

धान~1325|चावल~2050|ज्वर~920|जौ~810|मकई~1280|गेहूँ~1420|जो~1050|बेजर~-|जय~800 

獲得輸出

2343 
2366 
2344 
126 
49 
51 
50 
53 
124 
2330 
2366 
2357 
2354 
126 
50 

如何獲得我想要的輸出?

+2

您的預期產出是多少?您當前的產出是多少? –

+0

預計輸出是逐字節讀取字符串 – user3585120

+0

你嘗試過'in.read()'返回一個'int'('byte')嗎? –

回答

0

如果要讀取字節,請不要使用Reader s。 A Reader讀數爲char s(不是byte s)。如果您需要閱讀byte,請使用低級輸入輸出類別(InputStream/OutputStream)。

+0

可以ü請一些清晰可懂的 – user3585120

+0

在Java中,您有兩種輸入/輸出對象:可以讓您讀取字節的一種輸入/輸出對象,可讓您閱讀字符的輸入/輸出對象。在這種語言中,字符不是字節,它們是字節的翻譯(這是爲了支持不同的語言編碼)。所以,如果你想從文件中讀取字節,那麼你應該使用正確的類:InputStream。你有不同的InputStreams,它們只有讀取的來源不同,但基本上你只能從這些來源讀取字節。一旦你得到一個URL,你可以得到一個InputStream來從URL所表示的數據源中讀取字節。 –

+0

現在如果你想讀取URL表示的數據源中的字節,就得到'InputStream is = url.getInputStream();',然後用'int i = is'逐個讀取字節。read();'如果你在EOF上,那麼我將等於-1,如果不是將整數轉換爲一個字節與'字節b =(字節)我;'那麼你將有一個字節從URL。 –