2013-07-08 28 views
0

我当前通过硬编码ArrayList访问我的.csv文件。我希望能够选择文件,而不是像当前那样进行硬编码。从JFileChooser创建ArrayList而不是硬编码选项

我刚添加了JFileChooser。我无法让我的rowData逐行读取通过JOptionPane选择的文件。我该怎么做呢?

JFileChooser chooser = new JFileChooser(); 
    FileNameExtensionFilter filter = new FileNameExtensionFilter("CSV Files", "csv"); 
    chooser.setFileFilter(filter); 
    int returnVal = chooser.showOpenDialog(null); 
    if(returnVal == JFileChooser.APPROVE_OPTION) 
    { 
     System.out.println("You chose to open file: " + chooser.getSelectedFile().getName()); 
    } 

我的原始代码从这里开始(没有注释的行),它的工作原理。我只是不希望它在硬编码

ArrayList<String> rowData = new ArrayList<String>(); 
    FileConnections excelConn = new FileConnections(); 
    //rowData = excelConn.read(chooser); 
    rowData = excelConn.read(new File("11738 IPACC INFINITY Unconfirmed OIVS Responses.csv")); 
+0

您有什么问题?似乎你的一半问题可能是无关紧要的。我不确定这是否是关于阅读CSV文件或使用JFileChooser的问题。 –

+1

你只需要合并这两个,仍然读入一个ArrayList,但用'chooser.getSelectedFile()替换硬编码的文件'' – DairyLea

+0

@tieTYT - 我的问题是我得到错误,当我取消注释// rowData = excelConn.read(选择器)。我希望能够选择文件,然后从中读取。现在,它只是读取我硬编码的内容。文件名会改变多次,这就是为什么我需要文件选择器。 – bucs10us

回答

1

试试这个。(未经测试顺便说一句!):

JFileChooser chooser = new JFileChooser(); 
FileNameExtensionFilter filter = new FileNameExtensionFilter("CSV Files", "csv"); 
chooser.setFileFilter(filter); 
int returnVal = chooser.showOpenDialog(null); 
if(returnVal == JFileChooser.APPROVE_OPTION) 
{ 
    System.out.println("You chose to open file: " + chooser.getSelectedFile().getName()); 
    ArrayList<String> rowData = new ArrayList<String>(); 
    FileConnections excelConn = new FileConnections(); 
    rowData = excelConn.read(chooser.getSelectedFile()); 
} 

等同于:

JFileChooser chooser = new JFileChooser(); 
chooser.setFileFilter(new FileNameExtensionFilter("CSV Files", "csv")); 
if(chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { 
    System.out.println("You chose to open file: " + chooser.getSelectedFile().getName()); 
    ArrayList<String> rowData = new FileConnections().read(chooser.getSelectedFile()); 
} 
+0

我试过了,它似乎工作。有一个TNS的问题,但它的工作,直到它到达数据库我比较它。数据库工作时我会接受。谢谢! – bucs10us

相关问题