0

あるデバイスから別のデバイスに画像をアップロードするプログラムを作成しました。現状では、このプログラムでは、ユーザーは一度に 1 つのファイルしかアップロードできません。ユーザーが一度に複数のファイルをアップロードできるようにプログラムを編集したい場合、それを行う最善の方法は何でしょうか。

String source1 = source.getSelectedFile().getPath();
System.out.println("Source1: " + source1);
String nwdir1 = nwdir.getSelectedFile().getPath() + "\\" + filename;
System.out.println("nwdir1: " + nwdir1);

Path source = Paths.get(source1);
Path nwdir = Paths.get(nwdir1);

try {
    Files.copy(source, nwdir);

.getSelectedFiles() を実行できることに気付きましたが、.getPath() が許可されていないため、続行する方法がわかりません。これができると仮定します:

File[] source1 = source.getSelectedFiles();

2行目はどうすればいいですか:

String nwdir1 = nwdir.getSelectedFile().getPath() + "\\" + filename;

行を File 配列 (上記) に置き換えると、次の行でエラーが発生します。

Path source = Paths.get(source1);
Path nwdir = Paths.get(nwdir1);
4

2 に答える 2

2

File.listFilesまたはFile.listFiles(FileFilter)

複数ファイルの選択

申し訳ありませんが、それがあなたが望んでいたことだと思いましたがJFileChooser、ディレクトリを選択するために を使用しているので、ディレクトリのリストを作成したいと思っていました:P

setMultiSelectionEnabeldJFileChooserを使用して複数選択を許可するように設定します。ディレクトリを選択できるようにしたい場合は、ファイル選択モードをまたはに設定することをお勧めします。JFileChooser.FILES_ONLYJFileChooser.FILES_AND_DIRECTORIES

ダイアログがディレクトリの内容をフィルタリングできるようにファイル フィルタを設定し、ユーザーが選択できるものを制限することもできます。簡単にするために、FileNameExtensionFilterを見てください。

更新しました

JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
FileNameExtensionFilter filter = new FileNameExtensionFilter("Images", "png", "jpg", "jpeg");
chooser.setFileFilter(filter);

switch (chooser.showOpenDialog(null)) {

    case JFileChooser.APPROVE_OPTION:

        String currentPath = chooser.getCurrentDirectory().getPath();
        File[] files = chooser.getSelectedFiles();

        if (files.length > 0) {

            System.out.println("You have choosen " + files.length + " from " + currentPath);

        } else {

            System.out.println("You didn't selected anything");

        }

        break;

}
于 2012-08-13T19:29:30.320 に答える
1

Apache Commons ライブラリの FileUtils を使用します。非常に強力で便利です。コピーするファイル形式などを指定することもできます。

于 2012-08-13T18:18:24.203 に答える