ObjectInputStream 直接从 URL 读取 .dat 文件

ObjectInputStream read in a .dat file directly from URL

我是 Java 和英语的新手。

我在 URL 中使用 ObjectOutputStream.

编写了这个 .dat 文件

如何直接从 URL 读取它而无需将文件保存到我的计算机?

写入文件的第一件事是数字,其余是文本。我得到了号码,我需要得到休息。该文件中应该还有四行,正如任务中所说的那样(这里太不相关了)。

我得到了这个代码,它给了我一个数字 = 4

ObjectInputStream input2 = new ObjectInputStream(
            new URL("http://www.ut.ee/~marinai/sulearvutid.dat").openConnection().getInputStream());
    int number=input2.readInt();
    System.out.println(number); 
    // prints 4

现在看来我已经解决了这个问题,非常感谢Paul和EJP。我需要的是

    URL url = new URL("http://www.ut.ee/~marinai/sulearvutid.dat");
    ObjectInputStream input2 = new ObjectInputStream(
            url.openConnection().getInputStream());

    int number=input2.readInt();
    System.out.println(number); //prints 4

    byte[] buffer = new byte[1024];
    int bufPos;
    InputStream is = url.openConnection().getInputStream();

    for(int i=0; i<number; i++){
        String b = input2.readObject().toString();
        System.out.println(b);
    }

ObjectInputStream 应该通过 readObject() 读取 Objects。您也可以从流中读取整数,但我认为这没有任何用处 - 至少不是为了您的目的。

直接方式:

URL url;//init with your url
byte[] buffer = new byte[1024];
int bufPos;
InputStream is = url.openConnection().getInputStream();
StringBuilder builder = new StringBuilder("");

while((bufPos = is.read(buffer)) != -1)
    builder.append(new String(buffer , 0 , bufPos));

is.close();

return builder.toString();

或者,如果您想按行阅读:

URL url;//init with your url
BufferedReader br = new BufferedReader(url.openConnection().getInputStream());
StringBuilder builder = new StringBuilder("");
String line;

while((line = br.readLine()) != null)
    builder.append(line);

is.close();

return builder.toString();

当然它扔了一个NullPointerException. 尝试初始化 字节数组。

byte[] buf = new byte[1024]; // or whatever length you're expecting to read

并且不要使用 available() 作为流结束的测试。请参阅Javadoc。这不是它的目的。

我在这里没有看到任何需要 ObjectInputStream.

的内容