嗨我无法保存csv文件。我甚至没有在write命令中出错。我使用过FileChooser。任何人都可以解释使用Approve选项,因为我是新手。
if(e.getActionCommand()=="SaveTweet")
{
JFileChooser savePlaylistDialog = new JFileChooser();
savePlaylistDialog.setSelectedFile(new File( ".csv"));
int status = savePlaylistDialog.showSaveDialog(savePlaylistDialog);
try {
if (status == JFileChooser.APPROVE_OPTION) {
File savePlaylist = savePlaylistDialog.getSelectedFile();
ICsvListWriter csvWriter = null;
try {
TwitterProject obj=new TwitterProject();
String [][] tweet=obj.generateBottweet(username,interval,Btweet,no);
csvWriter = new CsvListWriter(new FileWriter("savePlaylist"),
CsvPreference.STANDARD_PREFERENCE);
for (int i = 0; i < tweet.length; i++) {
csvWriter.write(tweet[i]);
}
} catch (IOException e1) {
e1.printStackTrace();
} finally {
try {
System.out.println("closing file");
csvWriter.close();
} catch (IOException e1) {
}
}
} else if (status == JFileChooser.CANCEL_OPTION) {
// User has pressed cancel button
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "File could not be written, try again.");
}
}
}
答案 0 :(得分:2)
有两件事情跳出来......
首先,您比较String
的对象引用而不是内容...
if(e.getActionCommand()=="SaveTweet")
很少会如此,因为对象引用很可能永远不会相等,相反,你应该尝试使用类似的东西......
if("SaveTweet".equals(e.getActionCommand()))
哪个会比较两个String
的内容,但也会防范可能的NullPointerException
...
其次,您忽略了用户选择的File
,例如,您获得了用户选择的文件的引用...
File savePlaylist = savePlaylistDialog.getSelectedFile();
但是,您创建的FileWriter
仅使用String
值...
csvWriter = new CsvListWriter(new FileWriter("savePlaylist"));
相反,应该尝试使用像...这样的东西。
csvWriter = new CsvListWriter(new FileWriter(savePlaylist));
将内容写入用户选择的文件...
ps-我也会放弃......
savePlaylistDialog.setSelectedFile(new File( ".csv"));
因为它实际上没有意义,我怀疑会有一个名为.csv
的文件...或者更多,这是非常不可能......
答案 1 :(得分:0)
要比较java中的String对象,请使用.equals()方法而不是“==”运算符
变化
if(e.getActionCommand()=="SaveTweet")
到
if("SaveTweet".equals(e.getActionCommand()))
如果你想忽略使用如下代码
的情况if("SaveTweet".equalsIgnoreCase(e.getActionCommand()))
答案 2 :(得分:0)
您是否也测试过写作方法?您使用哪种csvwriter实现?在某些情况下(com.csvwriter),您需要在close()之前调用flush()。