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()
读取 Object
s。您也可以从流中读取整数,但我认为这没有任何用处 - 至少不是为了您的目的。
直接方式:
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.
的内容
我是 Java 和英语的新手。
我在 URL 中使用 ObjectOutputStream
.
如何直接从 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()
读取 Object
s。您也可以从流中读取整数,但我认为这没有任何用处 - 至少不是为了您的目的。
直接方式:
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.