1

現在、ディレクトリ全体を別のディレクトリにインポートするアプリケーションを構築しています。jarファイルをインポートする必要があるapachecommons.ioライブラリを使用しています。

GuiBuilder NetbeansのJfileChooserを使用してC:\outputに選択するディレクトリから考えてみましょう。すべての画像をそこにインポートしたいのですが。コードが実行されていません。JButton2(ディレクトリのロードを担当するボタン)を押すと、例外が発生します

WebAppImg.jButton2ActionPerformed(WebAppImg.java:141)でのスレッド "AWT-EventQueue-0" java.lang.NullPointerExceptionの例外(2行目は次のことを示しています:String filename = f.getAbsolutePath();)

copyDirectoryToDirectoryメソッドかもしれません。しかし、それを行うことについての私の考えは、FileSelectionModeをDirectories_Onlyにすると、絶対パスはたとえばC:\ importFile \ image1.jpgではなくC:\ importFileのようになるので、間違いではないということでした。しかし、多分これは間違いですか?

これまでのところ、これは私のコードです。

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:(for importing a whole directory(folder) from C:\images1 into C:\output ).        
    JFileChooser chooser = new JFileChooser();
    chooser = new JFileChooser(); 
    //chooser.setCurrentDirectory(new java.io.File("."));
    //chooser.setDialogTitle(choosertitle);
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    //chooser.showOpenDialog(null);
    //chooser.setAcceptAllFileFilterUsed(false);

    File f = chooser.getSelectedFile();

    String filename = f.getAbsolutePath();
try {

    File srcDir = new File(filename);
    File destDir = new File("C:/output/");

    FileUtils.copyDirectoryToDirectory(srcDir, destDir);

}
    catch (Exception ex) {
    ex.printStackTrace();
}
}                
4

2 に答える 2

1

正しいFileUtils方法を使用していないと思います。使ってみてくださいcopyDirectory(File srcDir, File destDir);

アップデート

srcディレクトリ内のすべてのファイルをコピーする場合は、上記の方法を使用します。ディレクトリをコピーしたい場合は、ディレクトリ全体を別のディレクトリにコピーするため、結果が得られるとC:\imagesしましょう。C:\COPIEDcopyDirectoryToDirectory(File srcDir, File destDir);C:\COPIED\images

これが私の実例です...

private void jFileChooser1ActionPerformed(java.awt.event.ActionEvent evt) {                                              
  File src =  jFileChooser1.getSelectedFile();
  File dest = new File("C:\\COPIED");
    System.out.println(src.getAbsolutePath());
    System.out.println(dest.getAbsolutePath());
    try {
        FileUtils.copyDirectory(src, dest);
        //FileUtils.copyDirectoryToDirectory(src, dest);
    } catch (IOException ex) {
        Logger.getLogger(FileChoosingFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
} 

実用的な例を次に示します。stackoverflow-jchooser.zip開始点としてのみ使用する必要があります。コピーは、EDTではなく別のスレッドで実行する必要があります。

于 2013-01-07T13:47:44.383 に答える
0

これを試して。

 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    JFileChooser chooser = new JFileChooser();
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    chooser.showOpenDialog(null);
    File f = chooser.getSelectedFile();
    String SourceDir = f.getAbsolutePath();
try {

    File srcDir = new File(SourceDir);
    File destDir = new File("C:/output/");

    FileUtils.copyDirectoryToDirectory(srcDir, destDir);

}
    catch (Exception ex) {
    ex.printStackTrace();
}
}                
于 2013-01-07T17:25:01.617 に答える