Java 将ArrayList写入Web服务中的文件
我想写一个ArrayList文件Java 将ArrayList写入Web服务中的文件,java,web-services,web-applications,file-io,jersey,Java,Web Services,Web Applications,File Io,Jersey,我想写一个ArrayList文件data.txtmy code: try{ File destination = new File("data.txt"); ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(destination)); os.writeObject(userList); os.close(); } catch.... 这没有任何例外,什么都没有。。代码正常
data.txt
my code:
try{
File destination = new File("data.txt");
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(destination));
os.writeObject(userList);
os.close();
} catch....
这没有任何例外,什么都没有。。代码正常运行。这段代码对Web服务不起作用吗?(REST@Jersey,非常确定与此无关)这里是更新的代码:
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();
ArrayList dataList;//**用户是自定义类
....
FileInputStream用户文件=新的FileInputStream(“C:\\user.dat”);
ObjectInputStream usersteam=新的ObjectInputStream(用户文件);
dataList=(ArrayList)usersteam.readObject();
usersteam.close();
使用文件上载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;
}
private List files=new ArrayList();
私有字符串filename=“yourfilename.dat”
私有布尔文件hasalReadyBeenUpload()引发IOException,ClassNotFoundException{
布尔值HasFileAlReadyBeenUpload=false;
File currentfile=新文件(文件名);
如果(!currentfile.exists()){
currentfile.createNewFile();
ObjectOutputStream输出
=新的ObjectOutputStream(
新文件输出流(currentfile));
添加(当前文件);
output.writeObject(当前文件);
output.close();
HasFileAlReadyBeenUpload=false;
}
否则{
ObjectInputStream输入
=新ObjectInputStream(
新文件输入流(当前文件));
files=(List)(input.readObject());
input.close();
对于(int i=0;i什么是arrayList文件?我想你是指.txt文件。对于.txt文件,为了安全起见,你最好用try/catch来封装如何在jersey中上载文件。try和cache都在那里,data.txt是一个文件,userList是一个数组列表。@smttsp Abobe请阅读.tnx。