Java语言 有关xml文件写的过程中,出现异常导致文件为空的情况
程序运行到一个地方,需要将原有.xml删除,新建该文件,重新写文件中的内容。但是使用过程中发现,会出现xml文件内容为空的情况,该如何解决?只是单纯的捕获异常有效果吗?还...
程序运行到一个地方,需要将原有.xml删除,新建该文件,重新写文件中的内容。但是使用过程中发现,会出现xml文件内容为空的情况,该如何解决?只是单纯的捕获异常有效果吗?
还有,其实执行过程中只需要修改一个标签中的内容,可是这样需要先定位标签的位置(读文件),再修改内容(写文件),这样做的话会比单纯的重新写容易实现吗? 展开
还有,其实执行过程中只需要修改一个标签中的内容,可是这样需要先定位标签的位置(读文件),再修改内容(写文件),这样做的话会比单纯的重新写容易实现吗? 展开
展开全部
其实你应该在程序中构建一个模型和文件内容相对应,就好修改了。
如读取文件,构建模型,修改模型,写入文件。
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
User user = new User("admin", "111111", new Adress("New York"));
addUser(user);
catXmlFile();
updatePassword("admin", "123456");
catXmlFile();
}
public static boolean addUser(User user) {
List<User> users = loadXmlForUsers();
for (User user1 : users) {
if (user1.getUsername().equals(user)) {
return false;
}
}
users.add(user);
writeXmlForUser(users);
return true;
}
public static void updatePassword(String username, String password) {
List<User> users = loadXmlForUsers();
for (User user : users) {
if (user.getUsername().equals(username)) {
user.setPassword(password);
}
}
writeXmlForUser(users);
}
public static void catXmlFile() {
try {
System.out.println("==============");
BufferedReader br = new BufferedReader(new FileReader("users.xml"));
while (br.ready()) {
System.out.println(br.readLine());
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void writeXmlForUser(List<User> users) {
try {
XMLEncoder encoder = new XMLEncoder(new FileOutputStream("users.xml"));
encoder.writeObject(users);
encoder.flush();
encoder.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static List<User> loadXmlForUsers() {
List<User> users;
try {
XMLDecoder decoder = new XMLDecoder(new FileInputStream("users.xml"));
users = (List<User>) decoder.readObject();
decoder.close();
} catch (Exception e) {
users = new ArrayList<>();
}
return users;
}
public static class User {
private String username;
private String password;
private Adress adress;
public User() {
}
public User(String username, String password, Adress adress) {
this.username = username;
this.password = password;
this.adress = adress;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Adress getAdress() {
return adress;
}
public void setAdress(Adress adress) {
this.adress = adress;
}
}
public static class Adress {
private String name;
public Adress() {
}
public Adress(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
追问
你好,我这个问题主要出现在Android运行过程中的,有什么好建议。
追答
总之,肯定要自己写一个,readFromXml,writeToXml,然后在程序中构建为一个模型,针对模型操作,这样会一劳永逸。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询