如何在JFileChooser中保存csv文件?

时间:2013-11-23 20:57:34

标签: java swing csv

嗨我无法保存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.");
        }
    }
 }

3 个答案:

答案 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()。