Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >从服务器读取对象(不是文件)时使用EOFException

从服务器读取对象(不是文件)时使用EOFException
EN

Stack Overflow用户
提问于 2015-09-29 18:35:30
回答 2查看 395关注 0票数 0

因此,我向客户端写了一个对象,如下所示:

代码语言:javascript
代码运行次数:0
复制
ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream());
out.writeObject(args);
out.close();

并在客户端接收对象,如下所示:

代码语言:javascript
代码运行次数:0
复制
ObjectInputStream in = new ObjectInputStream(connection.getInputStream());

Object objIn;
while(true) {
    if((objIn = in.readObject()) != null) {
        //work with obj
    }
}

我从不在客户端创建输出流,也从不在服务器端创建输入流。

而且,我发送的对象是可序列化的。

谢谢你的帮助!

编辑:这个问题的“重复”并不能帮助我回答我的问题,所以这个问题不是重复的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-29 20:16:03

代码语言:javascript
代码运行次数:0
复制
while(true) {
    if((objIn = in.readObject()) != null) {
        //work with obj
    }
}

问:你为什么要测试null?你打算发送null吗?因为那是你唯一的一次机会。答:因为您认为readObject()在流结束时返回null。虽然您忽略了将避开无限循环的break

没有。它抛出EOFException.,所以循环应该如下所示:

代码语言:javascript
代码运行次数:0
复制
try
{
    while(true) {
        objIn = in.readObject();
        //work with obj
    }
}
catch (EOFException exc)
{
    // end of stream
}
finally
{
    in.close();
}
票数 0
EN

Stack Overflow用户

发布于 2015-09-29 20:40:43

假设您在从connection对象读取输入流时收到了异常。

如果您已经在上面引用的输入流代码之前调用了connection.getInputStream(),那么您将收到EOF异常。因为连接对象中的输入流已经被消耗了。

related topic

解决此类问题的一个解决方案是在随机访问文件中写入输入流的内容,因为它们使您能够遍历该文件。

代码语言:javascript
代码运行次数:0
复制
public static RandomAccessFile toRandomAccessFile(InputStream is, File tempFile) throws IOException
    {
        RandomAccessFile raf = new RandomAccessFile(tempFile, "rwd");
        byte[] buffer = new byte[2048];
        int    tmp    = 0;
        while ((tmp = is.read(buffer)) != -1)
        {
            raf.write(buffer, 0, tmp);
        }
        raf.seek(0);
        return raf;
    }

稍后,您可以从文件中读取,如下所示。

代码语言:javascript
代码运行次数:0
复制
public static InputStream toInputStream(RandomAccessFile file) throws IOException
    {
        file.seek(0);    /// read from the start of the file 
        InputStream inputStream = Channels.newInputStream(file.getChannel());
        return inputStream;
    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32856827

复制
相关文章
pyspark之从HDFS上读取文件、从本地读取文件
hdfs上的路径: path="hdfs:///主机名:端口号/地址" 本地上的路径: path"file:///本地地址" 读取文件: rdd=sc.textFile(path)
西西嘛呦
2020/08/26
5.1K0
读取文件时,程序经历了什么?
当我们使用C语言中的printf、C++中的"<<",Python中的print,Java中的System.out.println等时,这是I/O;当我们使用各种语言读写文件时,这也是I/O;当我们通过TCP/IP进行网络通信时,这同样是I/O;当我们使用鼠标龙飞凤舞时,当我们扛起键盘在评论区里指点江山亦或是埋头苦干努力制造bug时、当我们能看到屏幕上的漂亮的图形界面时等等,这一切都是I/O。
范蠡
2020/12/15
1.1K0
读取文件时,程序经历了什么?
python从txt文件读取数据
  (作为一个python初学者,记录一点学习期间的笔记,方便日后查阅,若有错误或者更加便捷的方法,望指出!)
py3study
2020/01/19
3.9K0
python从txt文件读取数据
python读取文件如何去除空格_python读取txt文件时怎么去掉空格
Python读取TXT文件可以通过replace()函数来去除TXT文件中的空格,基本结构:replace(to_replace, value) 前面是需要替换的值,后面是替换后的值。
全栈程序员站长
2022/08/24
6.6K0
使用FileReader对象的readAsDataURL方法来读取图像文件
readAsDataURL方法会使用base-64进行编码,编码的资料由data字串开始,后面跟随的是MIME type,然后再加上base64字串,逗号之后就是编码过的图像文件的内容。
全栈程序员站长
2022/11/17
1.8K0
Python Numpy 从文件中读取数据
测试文件内容(test1.txt) hello,123,nihao 8,9,10 io,he,no 测试代码 import numpy # dtype:默认读取数据类型,delimiter:分隔符 world_alcohol = numpy.genfromtxt("test1.txt", dtype=str, delimiter=",") # 数据结构 print(type(world_alcohol)) # 数据内容 print(world_alcohol) # 帮助文档 print(help(nump
山海散人
2021/03/03
4.2K0
sl从程序集中读取xaml文件
 StreamResourceInfo sri = Application.GetResourceStream(new Uri("HowTo;component/Page.xaml", UriKind.Relative)); StreamReader sr = new StreamReader(sri.Stream); txtReadxml.Text = sr.ReadToEnd(); {1};component/{2} 1为程序集的名字 2为想读取的页面 page.xaml: <UserCont
用户1172164
2018/01/16
1K0
sl从程序集中读取xaml文件
【SAP ABAP系列】SAP ABAP 从FTP服务器读取文件到本地
正文部分 ​ DATA: hdl TYPE i, key TYPE i VALUE 26101957, dstlen TYPE i, blob_length TYPE i. DATA filepath TYPE string . DATA: BEGIN OF blob OCCURS 0, line(100) TYPE x, END OF blob. PARAMETERS: user(64) TYPE c , pwd(64
matinal
2020/11/14
2.5K0
【SAP ABAP系列】SAP ABAP 从FTP服务器读取文件到本地
使用FileInputStream读取文件内容
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException;
全栈程序员站长
2022/09/07
2.6K0
使用FileInputStream读取文件内容
HDFS——如何从HDFS上读取文件内容
用这个命令bin/Hadoop fs -cat 可以将HDFS上的文件内容读取到控制台。
星哥玩云
2022/06/30
2.7K0
matlab读取mnist数据集(c语言从文件中读取数据)
mnist database(手写字符识别) 的数据集下载地:http://yann.lecun.com/exdb/mnist/。
全栈程序员站长
2022/08/01
5K0
matlab读取mnist数据集(c语言从文件中读取数据)
C++ 从文件读取python numpy 数组
作为示例,我们先在python中创建一个二维的numpy数组, 并写入二进制文件:
用户6021899
2020/02/26
5.7K0
C++ 从文件读取python numpy 数组
使用文件字节输入流FileInputStream读取文件
1.在e盘下创建aaa.txt文件 2.代码 package d01_TestInput;/* * zt * 2020/8/7 * 10:33 * */ import java.io.F
2020/10/23
1.4K0
使用文件字节输入流FileInputStream读取文件
jackson设置读取属性时使用大写序列化属性时使用小写
jackson是一种使用广泛的json序列化库,虽然性能上可能不如fastjson,但是从其标准性以及安全性上来看(近一年爆出了不少fastjson的漏洞),下面就介绍下本文的主题,jackson序列化以及反序列化时可能用到的几个注解:
johnhuster的分享
2022/03/28
1.3K0
[Oracle 日常管理]使用bbed读取数据文件
https://blog.csdn.net/tianlesoftware/article/details/5006580
bsbforever
2020/08/19
5630
[Oracle 日常管理]使用bbed读取数据文件
使用Pandas读取大型Excel文件
from: cnblogs.com/everfight/p/pandas_read_large_number.html
hankleo
2020/09/17
2.3K0
使用ResourceBundle读取配置文件
使用ResourceBundle读取配置文件的例子如下: package com.yawn; import java.io.IOException; import java.util.Locale; import java.util.ResourceBundle; public class TestBudle { public static void main(String[] args) throws IOException { // 使用 getBundle 方法加载 ResourceBu
yawn
2018/03/14
2.3K0
java读取文件路径,上传文件到linux服务器!
import org.apache.commons.net.ftp.FTPClient;
用户7886150
2020/12/02
8.9K0
如何使用Python读取大文件
背景 最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法。 原味地址 准备工作 我们谈到“文本处理”时,我们通常是指处理的内容。Python 将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法: .read()、.readline() 和 .readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。 .read
用户1217611
2018/03/29
5.1K0
文件读取(FileInputStream 读取本地文件)
使用FileInputStream 读取本地文件(图片、视频、音乐、文档资料) 二进制文件、文本文件 1.在物理存储上上没有什么区别,存在硬盘上都是以二进制方式存储 2.解释数据的逻辑不同,程序读取文本文件,可以以字符方式读取,也可以以字节读取,将读取的数据解释为ASCII或者unicode编码;当程序读取二进制文件,以字节方式读取,对读取数据的解释由读取数据而定 ,如读取图片时,需要了解文件的结构,并解释读取的数据,如果不了解图片文件的结构,读取图片文件会失败,图片就会失败。
全栈程序员站长
2022/09/01
7.9K0

相似问题

读取对象时的EOFException

40

使用ObjectInputStream读取文件时的EOFException

42

读取包含对象的文件时,ObjectInputStream会抛出EOFexception

110

尝试使用RandomAcessFile读取文件时出现EOFException错误

12

尝试从SSLSocket读取时获取EOFException

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文