Java 如何在JFileChooser中保存csv文件?

Java 如何在JFileChooser中保存csv文件?,java,swing,csv,Java,Swing,Csv,您好,我无法保存csv文件。我甚至没有在写入命令中遇到错误。我使用了FileChooser。还有谁能解释一下Approve选项的用法,因为我是swing新手 if(e.getActionCommand()=="SaveTweet") { JFileChooser savePlaylistDialog = new JFileChooser(); savePlaylistDialog.setSelectedFile(new File( ".csv")

您好,我无法保存csv文件。我甚至没有在写入命令中遇到错误。我使用了FileChooser。还有谁能解释一下Approve选项的用法,因为我是swing新手

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.");
        }
    }
 }
if(如getActionCommand()=“SaveTweet”)
{
JFileChooser SavePlaylayDialog=新建JFileChooser();
保存播放列表对话框.setSelectedFile(新文件(“.csv”);
int status=saveplayldialog.showSaveDialog(saveplayldialog);
试试{
如果(status==JFileChooser.APPROVE_选项){
File savePlaylist=saveplayldialog.getSelectedFile();
ICsvListWriter csvWriter=null;
试试{
TwitterProject obj=新建TwitterProject();
字符串[][]tweet=obj.generateBettweet(用户名、间隔、Btweet、否);
csvWriter=新的CsvListWriter(新的文件编写器(“保存播放列表”),
CSVP(参考。标准优先);
for(int i=0;i
要在java中比较字符串对象,请使用.equals()方法而不是“==”运算符

改变

if(e.getActionCommand()=="SaveTweet")

如果您想忽略该案例,请使用下面的代码

if("SaveTweet".equalsIgnoreCase(e.getActionCommand()))

你也测试过写作方法吗?您使用哪种csvwriter实现?在某些情况下(com.csvwriter),您需要在close()之前调用flush()

有两样东西跳出来了

首先,比较
字符串的对象引用,而不是内容

if(e.getActionCommand()=="SaveTweet")
将很少是真的,因为对象引用很可能永远不会相等,相反,您应该尝试使用类似

if("SaveTweet".equals(e.getActionCommand()))
csvWriter = new CsvListWriter(new FileWriter(savePlaylist));
这将比较两个
字符串的内容,但也将防止可能的
NullPointerException
s

其次,您忽略了用户选择的
文件
,例如,您获得了用户使用

File savePlaylist = savePlaylistDialog.getSelectedFile();
但随后您创建了一个
FileWriter
,它只使用
字符串

csvWriter = new CsvListWriter(new FileWriter("savePlaylist"));
相反,你应该试着使用像

if("SaveTweet".equals(e.getActionCommand()))
csvWriter = new CsvListWriter(new FileWriter(savePlaylist));
将内容写入用户选择的文件

ps-我也会放弃

savePlaylistDialog.setSelectedFile(new File( ".csv"));

由于它实际上没有意义,我怀疑是否会有名为
.csv
…或更确切地说,这是极不可能的…

问题在于此语句csvWriter=new CsvListWriter(new FileWriter(“savePlaylist”);我删除了引号,效果很好。。。。谢谢你的帮助