好吧,我不確定爲什麼這不起作用,但我試圖使用JFileChooser來選擇源文件(C,C++,Java),然後將其複製到工作區我的項目。當我運行它時,它會選擇我選擇的文件,它會將我的工作區識別爲目標,但出於某種原因不會複製文件。將文件從JFileChooser複製到新目錄
JButton btnSelectFile = new JButton("Select File");
btnSelectFile.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
JFileChooser FileChooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("C, C++ or Java Files", "c", "cpp", "java");
FileChooser.setFileFilter(filter);
int returnValue = FileChooser.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION){
selectedFile = FileChooser.getSelectedFile();
filePath = selectedFile.getAbsolutePath();
InputStream inStream = null;
OutputStream outStream = null;
try{
File source =new File(filePath);
File dest =new File(System.getProperty("user.dir") + selectedFile.getName());
inStream = new FileInputStream(source);
outStream = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
int length;
while ((length = inStream.read(buffer)) > 0){
outStream.write(buffer, 0, length);
}
if (inStream != null)inStream.close();
if (outStream != null)outStream.close();
System.out.println("File Copied..");
}catch(IOException e1){
e1.printStackTrace();
}
textArea.setText("File Loaded: " + selectedFile.getName() + "\n\n\n" + "Hit 'Run Code'");
}
else System.out.println("Failed to Load");
//UnitXMLReader.ChosenFile = filePath;
}
});
你是否得到任何運行時錯誤?如果是,什麼? – afzalex 2014-09-19 20:14:08
你用什麼證據證明它不復制文件?例如,Eclipse只是因爲工作空間目錄中的文件發生更改而不必更新項目中的文件列表;您需要在文件更改後「刷新」該項目,以確保IDE知道文件更改。如果你依靠IDE來告訴你文件被複制,並且你沒有刷新項目,你可能會認爲它沒有被複制,但實際上它是複製的。 – arcy 2014-09-19 20:16:48
是否有你沒有使用[Files.copy](http://docs.oracle.com/javase/tutorial/essential/io/copy.html)的特定原因?我知道這些文件在技術上是inputStreams,但Files.copy提供了更多的靈活性。 – Compass 2014-09-19 20:20:15