2013-04-17 40 views
0

我想写一个ArrayList文件data.txt写的ArrayList到一个文件我的代码:在Web服务

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

该做的不是特罗任何异常,只是没什么..代码运行正常。这段代码不适用于Web服务吗? (REST @新泽西,很肯定没什么关系吧)

+0

什么是ArrayList的文件?你的意思是.txt文件,我猜。对于.txt文件,您应该更好地使用try/catch封装以确保您的安全 – smttsp

+0

http://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/了解如何上传文件。 – smk

+0

尝试和缓存都在那里,data.txt是一个文件,userList是一个数组List。 – Kivylius

回答

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(); 
0

使用一个文件上传的servlet而不是JAX- RS enpoint.长远来看更容易。关于从一个数组列表写入文件,这段代码将写入一个文件,并检查文件是否已经上传。

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服务,您最好使用Jup-RS端点的Fileupload servlet。注释@WebServlet将为您提供端点

请看看下面的链接进行例如 File upload servlet java