您好我正在尝试读取一个网址,我正在获取一个字符串我在控制台上打印该字符串,但我想将该网址逐字节读取,我不知道如何阅读
这是我的 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
如何获得所需的输出?
答案 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
)。