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