java - 将文件从 JFileChooser 复制到新目录

标签 java swing file-io directory

好吧,我不太确定为什么这不起作用,但我尝试使用 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\WorkspaceselectedFile.getName() 返回 myfile.cpp
然后在您的情况下 dest 代表 C:\Users\Me\Workspacemyfile.cpp 而不是 C:\Users\Me\Workspace\myfile.cpp

如果还不清楚,请告诉我。

关于java - 将文件从 JFileChooser 复制到新目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25941694/

相关文章:

java - 如何在项目级别配置log4j?

java - @RunWith(MockitoJUnitRunner.class) 不初始化模拟

java - 有没有易于使用和编程的日期选择器java swing?

c# - 如何使用 C# 取消阻止被阻止的网站?

java - 如何将x个整数拆分为y个数组?

java - 我做错了什么让我的应用程序在启动时运行?

java - 从数据库检索信息并将其显示在文本框或 JTable 中

java - 如何使用 JTable 鼠标单击事件将图像从 JTable 显示到 JLabel 或从数据库显示到 JLabel?

c++ - 从 .glsl 文件中读取 OpenGL 着色器语言

ruby - 在 puppet 中添加自定义函数