我试图写下一个新项目的名称'进入一个文本文件,但是在这样做时我遇到了一些错误,就像它读取和写入不同的文件一样,这就是我所拥有的。
CsvItemDao.java
public class CsvItemDao implements ItemDao {
private Resource csvResource;
public void setCsvResource(Resource csvResource){
this.csvResource = csvResource;
}
public List<Item> newItem() throws Exception {
List<Item> results = new ArrayList<Item>();
String name;
BufferedReader br = new BufferedReader(new FileReader(csvResource.getFile()));
String line;
while ((line = br.readLine()) != null) {
String[] fields = line.split(",");
String itemName = fields[0];
Item item = new Item(itemName);
results.add(item);
}
br.close();
Scanner input = new Scanner(System.in);
System.out.println("Enter new item");
name = input.nextLine();
Item item = new Item(name);
results.add(item);
try {
//BufferedWriter fw = new BufferedWriter(new FileWriter(csvResource.getFile()));
File file = new File (String.valueOf(csvResource.getFile()));
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
for (int i = 0; i < results.size(); i++) {
bw.write(results.get(i).getItemName() + "\n");
}
bw.close();
}catch(IOException e){
e.printStackTrace();
}
return results;
}
}
在我的spring-config.xml中我有这个
<bean id="itemDao"
class="foo.bar.CsvItemDao">
<property name="csvResource" value="items.csv"/>
</bean>
<bean id="ItemService"
class="foo.bar.ItemService">
<property name="itemDao" ref="itemDao"/>
</bean>
有趣的是,这是有效的,只是我的&#39; items.csv&#39;资源中的文件没有更新,但是当我从文件中读取时,我得到了我最近写的项目,我希望你理解,并告诉我是否可以提供更多信息。
编辑: 没有错误消息,它有效,它只是如果我打开文件(items.csv)我只会看到初始列表,而不是我添加的项目,但如果我从列表中读取到程序我看到所有项目,为什么我看不到列表中添加的项目?我相信它与文件编写者有关,也许它不会关闭或者什么。