gpt4 book ai didi

java - ObjectInputStream.readObject 上的文件结尾异常

转载 作者:行者123 更新时间:2023-12-01 20:04:05 29 4
gpt4 key购买 nike

我的应用程序传输 Twitter 数据并将其写入文件。

while(true){
Status status = queue.poll();

if (status == null) {
Thread.sleep(100);
}

if(status!=null){
list.add(status);
}

if(list.size()==10){
FileOutputStream fos = null;
ObjectOutputStream out = null;
try {
String uuid = UUID.randomUUID().toString();
String filename = "C:/path/"+topic+"-"+uuid+".ser";
fos = new FileOutputStream(filename);
out = new ObjectOutputStream(fos);
out.writeObject(list);
tweetsDownloaded += list.size();
if(tweetsDownloaded % 100==0)
System.out.println(tweetsDownloaded+" tweets downloaded");
// System.out.println("File: "+filename+" written.");
out.close();
} catch (IOException e) {

e.printStackTrace();
}

list.clear();
}

我有这段代码可以从文件中获取数据。

while(true){
File[] files = folder.listFiles();

if(files != null){
Arrays.sort(//sorting...);

//Here we manage each single file, from data-load until the deletion
for(int i = 0; i<files.length; i++){
loadTweets(files[i].getAbsolutePath());
//TODO manageStatuses
files[i].delete();
statusList.clear();
}

}

}

方法 loadTweets() 执行以下操作:

private static void loadTweets(String filename) {

FileInputStream fis = null;
ObjectInputStream in = null;
try{
fis = new FileInputStream(filename);
in = new ObjectInputStream(fis);
statusList = (List<Status>) in.readObject();
in.close();
}
catch(IOException | ClassNotFoundException ex){
ex.printStackTrace();
}


}

不幸的是,我不知道为什么有时它会抛出

EOFException

运行此行时

statusList = (List<Status>) in.readObject();

有人知道我该如何解决这个问题吗?谢谢。

最佳答案

我发现您根据您之前的问题使用 getAbsolutePath() 正确传递了文件

根据我所读到的内容,可能有几件事,其中之一是文件为空。

解释这个想法,您可能已经编写了该文件,但某些原因导致该文件内部没有任何内容,这可能会导致 EOFException。该文件实际上存在,只是空的

编辑

尝试将代码括在 while(in.available() > 0)

看起来像这样

private static void loadTweets(String filename) {

FileInputStream fis = null;
ObjectInputStream in = null;
try{
fis = new FileInputStream(filename);
in = new ObjectInputStream(fis);
while(in.available() > 0) {
statusList = (List<Status>) in.readObject();
}
in.close();
}
catch(IOException | ClassNotFoundException ex){
ex.printStackTrace();
}
}

关于java - ObjectInputStream.readObject 上的文件结尾异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47659784/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com