好吧,我不太确定为什么这不起作用,但我尝试使用 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;
}
});
最佳答案
创建目标文件
时使用以下内容
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
。
如果还不清楚,请告诉我。
关于java - 将文件从 JFileChooser 复制到新目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25941694/