Java 如何逐字节读取url?
嗨,我正在尝试读取一个url,其中我得到了一个字符串,我正在控制台上打印该字符串,但我想一个字节一个字节地读取该url,但我没有得到该如何读取 这是我的ReadTextFromURLJava 如何逐字节读取url?,java,url,Java,Url,嗨,我正在尝试读取一个url,其中我得到了一个字符串,我正在控制台上打印该字符串,但我想一个字节一个字节地读取该url,但我没有得到该如何读取 这是我的ReadTextFromURL import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedUR
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
如何获得所需的输出?您可以将URL作为InputStream打开,并使用面向字节的方法指定大小等于1的数组。请查看此页面: 顺便说一下,在处理流时使用try-with-resource构造:
byte oneSizeByteArray = new byte[1];
try (InputStream is = url.openStream()) {
is.read(oneSizeByteArray,0,1)
} catch (IOException ex) {
}
如果要读取字节,请不要使用
Reader
s。Reader
读取char
s(不是byte
s)。如果您需要读取字节,请使用低级输入输出类(InputStream
/OutputStream
)。您的预期输出和当前输出是什么?预期输出是逐字节读取字符串。您是否尝试过在.read()中使用返回int
(byte
)的in.read()
然后以可比较的int:Well类型给出错误消息,-1
是在耗尽输入时返回的结果。非null
。int
值永远不能为null
。在Java中,有两种输入/输出对象:一种用于读取字节,另一种用于读取字符。在该语言中,字符不是字节,而是字节的翻译(这是为了支持不同的语言编码)。因此,如果您想从文件中读取字节,那么应该使用正确的类:InputStream。您有不同的输入流,它们只因读取源不同而不同,但基本上您只能从这些源读取字节。获取URL后,您可以获取InputStream以从URL表示的数据源读取字节。现在,如果您要从URL表示的数据源读取字节,请获取InputStream is=URL.getInputStream()然后使用int i=is.read()逐个读取字节(例如)代码>如果你在EOF上,那么我将等于-1,如果不将整数转换成字节字节b=(字节)i代码>然后您将从URL获得一个字节。