2013-04-17 39 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