如何逐字节读取url?

时间:2014-05-02 13:22:23

标签: java 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 :(得分:1)

您可以将URL作为InputStream打开,并使用面向字节的方法指定大小等于1的数组。查看此页面:http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read(byte[],%20int,%20int) 顺便说一句,在使用流时使用try-with-resource构造结构:

byte oneSizeByteArray = new byte[1];
try (InputStream is = url.openStream()) {
    is.read(oneSizeByteArray,0,1)
} catch (IOException ex) {
}

答案 1 :(得分:0)

如果要读取字节,请不要使用Reader s。 Reader读取char s(不是byte s)。如果您需要阅读byte s,请使用低级输入输出类(InputStream / OutputStream)。