我试图在swings应用程序中上传多个文件。我已经声明了一个数组来保存所选文件的值,但是当我点击上传按钮时,只有1个文件被上传。如何将所有选定的文件上传到数据库?
打开和上传文件的代码是....
public void openFile()
{
JFileChooser jfc = new JFileChooser();
jfc.setMultiSelectionEnabled(true);// added line
int result = jfc.showOpenDialog(this);
if(result == JFileChooser.CANCEL_OPTION) return;
try {
ArrayList<String> FileData = new ArrayList<String>();
File[] file = jfc.getSelectedFiles();
String s=""; int c=0;
for(int i=0;i<file.length;i++) //added
{
jep.setText(file[i].toString()); // added
}
return FileData;
}
catch (Exception e)
{
JOptionPane.showMessageDialog(this,e.getMessage(),
"File error",JOptionPane.ERROR_MESSAGE);
}
}
答案 0 :(得分:0)
// get list of selected files
File[] file = jfc.getSelectedFiles();
String s=""; int c=0;
for(int i=0;i<file.length;i++) //added
{
// The toString will just return you back the path of the file object times the number of bytes in the file.
jep.setText(file[i].toString()); // added
}
return FileData;
此代码无效。如果您希望方法将给定文件名的文件读入字符串数组,那么您将需要:
/**
* Read entire contents of a text file.
*
* @param fileName Text file name
* @return ArrayList of String (line) elements
* @throws FileNotFoundException
* @throws IOException
*/
public static ArrayList readTextFile( String fileName )
throws FileNotFoundException, IOException
{
ArrayList lines = new ArrayList();
BufferedReader in = null;
try
{
in = new BufferedReader( new FileReader( fileName ));
String line;
while ( ( line = in.readLine()) != null )
{
lines.add( line );
}
}
finally
{
if ( in != null )
{
try
{
in.close();
}
catch ( IOException ex )
{
}
}
}
return lines;
}
由于您想要读入多个文件的内容,只需在循环中执行此操作并单独执行每个文件。如果将它全部加载到内存中,可能会遇到问题。
答案 1 :(得分:0)
您尚未通过“上传多个文件”明确定义您的实际含义。我假设您希望将多个文本文件的内容一个接一个地加载到单个JEditorPane
中。如果是这种情况,Romain的答案会向您显示加载单个文件的示例。
您的代码实际上正在做的是循环遍历File
个对象的数组并设置其路径(这是toString
在File
上返回的内容)作为文本在编辑器窗格中。每一个都覆盖最后一个,这就是为什么你最终得到一个文件路径。
我可能还会建议您弹出JFileChooser
时限制文件,用户可以选择特定文件类型(例如txt,html)。