2014-02-10 35 views
-4

我試圖寫一個程序,拷貝一個文件,並複製它的內容到另一個。我必須讓用戶選擇文件。我卡住了,可以幫助我。有什麼不對我的JFileChooser程序

import java.io.IOException; 
import java.nio.file.CopyOption; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.nio.file.StandardCopyOption; 

import javax.swing.JFileChooser; 

public class FileCopy { 
    public static void main(String[]Args) throws IOException { 
     JFileChooser chooser = new JFileChooser("/Users/josealvarado/Desktop/"); 

     Path FROM = Paths.get(chooser); 
     Path TO = Paths.get(chooser); 

     //overwrite existing file, if exists 
     CopyOption[] options = new CopyOption[]{ 
      StandardCopyOption.REPLACE_EXISTING, 
      StandardCopyOption.COPY_ATTRIBUTES 
     }; 
     Files.copy(FROM, TO, options); 
    } 
} 
+6

你得到什麼錯誤? – Salah

回答

1

我只能猜測,但我認爲你需要一個JFrame其中將包含您的JFileChooser,我犯了一個小例子,沒有任何功能,只是爲了展示,你怎麼可以或許達到自己的目標。

請了解你的下一個問題(S)在這裏SO,上傳你嘗試和POST錯誤/異常你,否則就很難幫助或解決您的問題!

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package de.professional_webworkx.tutorial.jtable.view; 

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 

/** 
* 
* @author ottp 
*/ 
public class MainFrame extends JFrame { 

    private JFileChooser chooser; 

    public MainFrame() { 
     initGUI(); 
    } 

    private void initGUI() { 

     chooser = new JFileChooser(); 
     chooser.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       System.out.println(chooser.getSelectedFile().getName()); 
      } 
     }); 
     this.setTitle("FileChoosing and copy one file to another"); 
     this.setSize(1024, 768); 
     this.getContentPane().add(chooser, BorderLayout.NORTH); 
     this.setVisible(true); 
    } 
} 

的班,開始你的App

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 

package de.professional_webworkx.tutorial.jtable; 

import de.professional_webworkx.tutorial.jtable.view.MainFrame; 
import javax.swing.JFileChooser; 

/** 
* 
* @author ottp 
*/ 
public class JTableDemo { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     new MainFrame(); 

    } 

} 

希望這有助於 帕特里克

+0

感謝您的意見。這是我在這個網站上的第一篇文章,但我會盡量讓下一次更清楚。 – user3213435

1
Path FROM = Paths.get(chooser); 
    Path TO = Paths.get(chooser) 

你不能傳遞一個JFileChooserPaths.get()。以下是過載的靜態方法

  • Paths.get(String first, String... more) - 將路徑字符串或連接時形成路徑字符串的字符串序列轉換爲路徑。
  • Paths.get(URI uri) - 將給定的URI轉換爲Path對象。

你可能希望傳遞一個字符串。爲此,您需要從JFileChooser獲得String文件路徑。要做到這一點,首先需要chooser.showOpenDialog()它返回一個int如果OK按鈕選擇文件(APPROVE_OPTION)後按下,所以,你想要做這樣的事情

JFileChooser chooser = new JFileChooser(); 
int result = chooser.showOpenDialog(null); 
String path; 
if (result == JFileChooser.APPROVE_OPTION) { 
    path = (chooser.getSelectedFile()).getAbsolutePath(); 
} 

然後,你可以通過pathPaths.get(path)

你真的應該看看How to Use File Choosers

+0

感謝您的回覆我嘗試閱讀filechooser API,但不太明白它。 – user3213435