Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何逐字节读取url?_Java_Url - Fatal编程技术网

Java 如何逐字节读取url?

Java 如何逐字节读取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

嗨,我正在尝试读取一个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

如何获得所需的输出?

您可以将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获得一个字节。