好的,我不确定为什么这不起作用但是我想尝试使用JFileChooser来选择源文件(C,C ++,Java),然后将其复制到我项目的工作区中。当我运行它时,它选择我选择的文件,它将我的工作区识别为目的地但由于某种原因只是不复制文件。
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;
}
});
答案 0 :(得分:1)
创建目标File
File dest =new File(System.getProperty("user.dir"), selectedFile.getName());
而不是
File dest =new File(System.getProperty("user.dir") + selectedFile.getName());
<强>释强>
假设System.getProperty("user.dir")
返回C:\Users\Me\Workspace
而selectedFile.getName()
返回myfile.cpp
然后在你的情况下,dest代表C:\Users\Me\Workspacemyfile.cpp
代替
C:\Users\Me\Workspace\myfile.cpp
。
告诉我是否还不清楚。
答案 1 :(得分:0)
对于File dest,请尝试用逗号分隔它们,而不是添加两者。
将dest的sysout作为添加版本和逗号版本,以查看为什么这样做会出现问题。