Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java.io在文本文件中只保存了一个对象_Java_List_Object_Java Io - Fatal编程技术网

使用java.io在文本文件中只保存了一个对象

使用java.io在文本文件中只保存了一个对象,java,list,object,java-io,Java,List,Object,Java Io,我开始为我的类开发一个应用程序,它有一个请求,我需要将列表中的对象保存到.txt文件中。它似乎在工作,但当我这样做时,它只保存了我输入的一个对象。我不知道解决办法是什么。我的代码如下。另外,我正在使用gui将我的对象添加到列表中 List<Korisnik> listaK=Kontroler.vratiObjekatKontroler().vratiKorisnika(); try { FileOutputStream fos = new FileOutpu

我开始为我的类开发一个应用程序,它有一个请求,我需要将列表中的对象保存到.txt文件中。它似乎在工作,但当我这样做时,它只保存了我输入的一个对象。我不知道解决办法是什么。我的代码如下。另外,我正在使用gui将我的对象添加到列表中

List<Korisnik> listaK=Kontroler.vratiObjekatKontroler().vratiKorisnika();
   try {
          FileOutputStream fos = new FileOutputStream(new File("output.txt"));
          ObjectOutputStream out= new ObjectOutputStream(fos);
          for (int i = 0; i < listaK.size(); i++) {
             out.writeObject(listaK.get(i));
             out.close();
          }

        } catch (IOException ex) {
            ex.printStackTrace();
        }
List listaK=Kontroler.vratiObjekatKontroler().vratiKorisnika();
试一试{
FileOutputStream fos=新的FileOutputStream(新文件(“output.txt”);
ObjectOutputStream out=新的ObjectOutputStream(fos);
对于(int i=0;i
用于(int i=0;i
写入第一个对象后,将关闭输出流。这样,您就不能在其中写入任何其他内容。将
out.close()
移出
for
循环。

for(int i=0;i

写入第一个对象后,将关闭输出流。这样,您就不能在其中写入任何其他内容。将
移出.close()
移出
for
循环。

您正在关闭for循环内的流。我建议:

FileOutputStream fos = null;
ObjectOutputStream out = null;

try {
    fos = new FileOutputStream(new File("output.txt"));
    out= new ObjectOutputStream(fos);

    for (int i = 0; i < listaK.size(); i++) {
        out.writeObject(listaK.get(i));
    }
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    if (out != null) out.close;
    if (fos != null) fos.close;
}
FileOutputStream=null;
ObjectOutputStream out=null;
试一试{
fos=新文件输出流(新文件(“output.txt”);
out=新对象输出流(fos);
对于(int i=0;i
您正在关闭for循环中的流。我建议:

FileOutputStream fos = null;
ObjectOutputStream out = null;

try {
    fos = new FileOutputStream(new File("output.txt"));
    out= new ObjectOutputStream(fos);

    for (int i = 0; i < listaK.size(); i++) {
        out.writeObject(listaK.get(i));
    }
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    if (out != null) out.close;
    if (fos != null) fos.close;
}
FileOutputStream=null;
ObjectOutputStream out=null;
试一试{
fos=新文件输出流(新文件(“output.txt”);
out=新对象输出流(fos);
对于(int i=0;i
希望您使用的至少是Java SE 7:)您可以利用它,这样您就不必关心关闭“资源”:

试试(
FileOutputStream fos=新的FileOutputStream(新文件(“output.txt”);
ObjectOutputStream out=新的ObjectOutputStream(fos)
){
对于(int i=0;i

try with resources语句包含用分号分隔的
FileOutputStream
ObjectOutputStream
对象声明。当直接跟随它的代码块终止时(正常终止或由于异常终止),将按此顺序自动调用
FileOutputStream
ObjectOutputStream
对象的close方法。请注意,资源的close方法的调用顺序与它们的创建顺序相反。

希望您至少使用Java SE 7:)您可以利用它,因此您不需要关心关闭“资源”:

试试(
FileOutputStream fos=新的FileOutputStream(新文件(“output.txt”);
ObjectOutputStream out=新的ObjectOutputStream(fos)
){
对于(int i=0;i

try with resources语句包含用分号分隔的
FileOutputStream
ObjectOutputStream
对象声明。当直接跟随它的代码块终止时(正常终止或由于异常终止),将按此顺序自动调用
FileOutputStream
ObjectOutputStream
对象的close方法。请注意,资源的封闭方法的调用顺序与它们的创建顺序相反。

天哪,我似乎要发疯了。非常感谢。天哪,我好像要发疯了。非常感谢。我想是时候利用资源进行
尝试了我认为是时候利用资源进行
尝试了
;)
try ( 
     FileOutputStream fos = new FileOutputStream(new File("output.txt"));
     ObjectOutputStream out= new ObjectOutputStream(fos)
 ){
      for (int i = 0; i < listaK.size(); i++) {
         out.writeObject(listaK.get(i));
      }

    } catch (IOException ex) {
        ex.printStackTrace();
    }