【问题标题】:Java - run a java program with args within a Java programJava - 在 Java 程序中运行带有 args 的 Java 程序
【发布时间】:2014-03-05 07:00:25
【问题描述】:

我有一个 JButton,它打开 JFileChooser,然后将一个文件选择到一个名为“file”的变量中。

我想将所选文件重命名为“Best.html”,然后将其提供给TableToCSV.java (java TableToCSV.class Best.html),这会将所选文件转换为 .csv 格式。

这是我的代码 -

final JFileChooser  fileDialog = new JFileChooser();
    JButton btnInputFile = new JButton("Input File");
    btnInputFile.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

            int returnVal = fileDialog.showOpenDialog(rootPane);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
               java.io.File file = fileDialog.getSelectedFile();

            }

        }
    });

注意 - 我想重命名,因为 TableToCSV.java 文件只输入带有 .html 扩展名的文件。

注意 - TableToCSV.java 与我的 java 程序位于同一文件夹中。

【问题讨论】:

    标签: java swing csv file-io


    【解决方案1】:

    你有两个选择...

    你可以...

    使用TableToCSVmain方法...

    TableToCSV.main(new String[]{file.getAbsolutePath()});
    

    这与从命令行调用它本质上是一样的

    或者你可以...

    使用TableToCSV 构造函数...

    TableToCSV tableToCSV = new TableToCSV( file, ',', '\"', '#', CSV.UTF8Charset );
    

    问题在于,TableToCSV 需要一个扩展名为 4 字符的文件名...因此,如果您要传递一个扩展名为 .txtFile,则生成的文件不会如您所料,实际上可能会导致一些危险。

    在这种情况下,您可以使用

    String name = file.getName();
    name = name.subString(0, name.lastIndexOf("."));
    name += ".html";
    File newFile = new File(file.getParentFile(), name);
    if (file.renameTo(newFile)) {
        TableToCSV tableToCSV = new TableToCSV( newFile, ',', '\"', '#', CSV.UTF8Charset );
    }
    

    但我确实讨厌重命名文件...

    【讨论】:

      【解决方案2】:

      为什么不调用TableToCSV的构造函数呢?比如TableToCSV.java的第192行?

       new TableToCSV( file, ',', '\"', '#', CSV.UTF8Charset );
      

      【讨论】:

        【解决方案3】:

        也许是这样的?

        final JFileChooser  fileDialog = new JFileChooser();
                JButton btnInputFile = new JButton("Input File");
                btnInputFile.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent arg0) {
        
                        int returnVal = fileDialog.showOpenDialog(rootPane);
                        if (returnVal == JFileChooser.APPROVE_OPTION) {
                           java.io.File file = fileDialog.getSelectedFile();
                           File newFile = new File("Best.html")
                           com.mindprod.TableToCSV(file.renameTo(newfile), ... );
                        }
        
                    }
                });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-07
          • 2015-09-26
          • 2016-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多