我是Java和英语的新手。
我在使用ObjectOutputStream
编写的URL中有.dat文件。
如何直接从网址阅读,而无需将文件保存到我的计算机上?
文件中写的第一件事就是一个数字,其余的是文字。我得到了号码,我需要得到其余的。该文件中应该还有四行,就像在任务中说的那样(这里太无关紧要了)。
我有这个代码,它给了我一个数字= 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);
}
答案 0 :(得分:0)
ObjectInputStream
应该通过Object
阅读readObject()
。你也可以从流中读取整数,但我没有看到任何用途 - 至少不是为了你的目的。
直接方式:
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();
答案 1 :(得分:0)
当然它扔了NullPointerException.
尝试初始化字节数组。
byte[] buf = new byte[1024]; // or whatever length you're expecting to read
并且不要使用available()
作为流结束的测试。见Javadoc。这不是它的用途。
我在这里看不到需要ObjectInputStream.