0

我想写一个 ArrayList 文件data.txt我的代码:

try{
    File destination = new File("data.txt");
    ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(destination));  
    os.writeObject(userList);
    os.close();
} catch....

这不会引发任何异常,只是什么都没有。代码运行正常。此代码是否不适用于 Web 服务?(REST @ Jersey,很确定与它无关)

4

2 回答 2

0

这里更新的代码:

FileOutputStream userfile = new FileOutputStream("C:\\user.dat");
ObjectOutputStream userstream = new ObjectOutputStream(userfile);
userstream.writeObject(userList);
userstream.close();

请注意“C:\data.dat”代码无法仅使用 data.dat 运行(在源文件夹上没有创建可见的文件。

输入代码如下:

ArrayList<User> dataList; // ** User is a custom Class
....
FileInputStream userfile = new FileInputStream("C:\\user.dat");
ObjectInputStream usersteam = new ObjectInputStream(userfile);
dataList = (ArrayList<User>)usersteam.readObject();
usersteam.close();
于 2013-04-18T11:46:54.447 回答
0

使用文件上传 servlet 而不是 JAX-RS 端点。从长远来看,它更容易。关于从数组列表写入文件,此代码会将其写入文件并检查文件是否已上传。

private List<File> files=new ArrayList<File>();
  private String filename="yourfilename.dat"

     private boolean fileHasAlreadyBeenUploaded() throws IOException, ClassNotFoundException {

    boolean hasFileAlreadyBeenUploaded=false;
    File currentfile=new File(fileName);
    if(!currentfile.exists()){
        currentfile.createNewFile();
        ObjectOutputStream output 
        = new ObjectOutputStream(
              new FileOutputStream(currentfile));
        files.add(currentFile);
        output.writeObject(currentFile);
        output.close();
        hasFileAlreadyBeenUploaded=false;
    }
    else{
         ObjectInputStream input 
            = new ObjectInputStream(
                  new FileInputStream(currentfile));

         files = (List<File>) (input.readObject());
         input.close();
        for(int i=0;i<files.size();i++){
            if(FileUtils.contentEquals(files.get(i), currentfile)){
                hasFileAlreadyBeenUploaded=true;
            }   
        }
        if(!hasFileAlreadyBeenUploaded){
            ObjectOutputStream output 
            = new ObjectOutputStream(
                  new FileOutputStream(fileName));
            files.add(currentfile);
            output.writeObject(currentfile);
            output.close();
        }
    }
    return hasFileAlreadyBeenUploaded;

}

然后你可以用它做任何你想做的事情。对于您的 Web 服务,您最好使用 JAX-RS 端点的 Fileupload servlet。注释 @Webservlet 将为您提供该端点

请查看以下链接以获取该示例 文件上传 servlet java

于 2013-04-22T23:26:39.717 回答