将ArrayList写入Web服务中的文件

时间:2013-04-17 15:48:03

标签: java web-services web-applications file-io jersey

我想编写一个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,非常肯定与此无关)

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

使用文件上传servlet而不是JAX-RS enpoint。从长远来看,它更容易。关于从arraylist写入文件,此代码将其写入文件,并检查文件是否已上载。

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将为您提供该端点

请查看该示例的以下链接 File upload servlet java