2014-05-02 111 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。 –