优化版,在另一个文件夹存文件
package CESHI1; import org.apache.commons.io.FileUtils; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; public class FileDialogTest1 { String sourceFilepath1; String getDirectory1; String getFile1; String getDirectory2; public FileDialogTest1(){ JFrame frame = new JFrame("测试"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(600,800); frame.setLayout(null); JButton b1 = new JButton("选择文件"); b1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ sourceFilepath1 = Option_Dialog(frame); getDirectory1 = getDirectory1(); getFile1 = getFile1(); } }); JButton b2 = new JButton("选择保存文件的目录"); b2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ getDirectory2 = Option_Dialog2(frame); } }); JButton b3 = new JButton("保存文件"); b3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ saveFile(getDirectory1,getFile1,getDirectory2); } }); b1.setBounds(0,15,200,15); b2.setBounds(0,50,200,15); b3.setBounds(0,100,200,15); frame.add(b1); frame.add(b2); frame.add(b3); frame.setVisible(true); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } private String Option_Dialog(JFrame frame){ //FileDialog: 这是 Java AWT(Abstract Window Toolkit)中的一个类,用于显示文件选择对话框,允许用户选择文件或目录 //FileDialog.LOAD: 这是一个常量,表示对话框的模式。FileDialog.LOAD 表示这是一个打开文件的对话框,用户可以选择一个文件进行加载。 // 另一个常用的常量是 FileDialog.SAVE,它表示保存文件的对话框,用户可以选择一个位置来保存文件。 FileDialog d1 = new FileDialog(frame,"选择文件",FileDialog.LOAD); //这行代码的作用是显示 FileDialog 对话框。 // 具体来说,setVisible 方法用于控制组件的可见性。当传递 true 时,它会使对话框变为可见状态;传递 false 时,则会隐藏对话框。 d1.setVisible(true); //d1.getDirectory(): 返回用户选择的文件所在的目录路径。这个路径是一个字符串,不包括文件名。 // d1.getFile(): 返回用户选择的文件名。如果用户没有选择任何文件,返回 null。 getDirectory1 = d1.getDirectory(); getFile1 = d1.getFile(); String sourceFilePath1_1 = d1.getDirectory()+d1.getFile(); return sourceFilePath1_1; } private String getDirectory1(){ return getDirectory1; } private String getFile1(){ return getFile1; } private String Option_Dialog2(JFrame frame) { // 这是 Java Swing 提供的一个类,用于让用户选择文件或目录。 // 与 AWT 的 FileDialog 相比,JFileChooser 提供了更多的功能和更好的用户界面。 //JFileChooser fileChooser = new JFileChooser(frame, "选择需要保存的文件夹",JFileChooser.DIRECTORIES_ONLY); JFileChooser fileChooser = new JFileChooser(); //用于设置 JFileChooser 对话框的标题 fileChooser.setDialogTitle("选择需要保存的文件夹"); // 这行代码用于设置 JFileChooser 对话框,使其只能选择目录(文件夹)。 // 这样,用户在打开的文件选择对话框中将只能选择文件夹,而不能选择单个文件。 fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); /*** * int result = fileChooser.showOpenDialog(frame); * 这行代码用于显示文件选择对话框,并等待用户进行选择。showOpenDialog 方法会阻塞当前线程, * 直到用户关闭对话框(通过点击“打开”或“取消”按钮)。方法的返回值是一个整数,表示用户的操作结果。 * * JFileChooser.APPROVE_OPTION (通常为 0): 表示用户选择了文件夹并点击了“打开”按钮。 * JFileChooser.CANCEL_OPTION (通常为 1): 表示用户点击了“取消”按钮或关闭了对话框。 * JFileChooser.ERROR_OPTION (通常为 -1): 表示发生了错误(例如,用户没有权限访问某个文件夹)。 * */ int result = fileChooser.showOpenDialog(frame); if (result == JFileChooser.APPROVE_OPTION) { // File selectedFolder = fileChooser.getSelectedFile(); // 这行代码用于获取用户通过 JFileChooser 对话框选择的文件或文件夹。 // getSelectedFile() 方法返回一个 File 对象,该对象表示用户选择的文件或文件夹。 File selectedFolder = fileChooser.getSelectedFile(); //File selectedFolder = fileChooser.getSelectedFile(); 这行代码用于获取用户通过 JFileChooser 对话框选择的文件或文件夹。 // 具体来说,getSelectedFile() 方法返回一个 java.io.File 对象,该对象表示用户在对话框中选择的文件或文件夹。 // 如果用户没有选择任何文件或文件夹(例如点击了“取消”按钮),则返回 null。 getDirectory2 = selectedFolder.getAbsolutePath(); return getDirectory2; } return null; } private void saveFile(String getDirectory1,String getFile1,String getDirectory2) { String sourceFilePath = getDirectory1 + getFile1; String destinationFilePath = getDirectory2 + "\\" + getFile1; File sourceFile = new File(sourceFilePath); File destinationFile = new File(destinationFilePath); /*** * destinationFile: 这是一个 File 对象,代表目标文件。 * getParentFile(): 这是 File 类的一个方法,它返回一个 File 对象, * 该对象表示当前 File 对象所代表的文件或目录的父目录。 * 如果当前 File 对象已经是根目录,或者路径中没有父目录信息,则返回 null。 * */ File destinationDirectory = destinationFile.getParentFile(); /*** * destinationDirectory.exists() 是 Java 中 File 类的一个方法, * 用于检查由 File 对象表示的文件或目录是否存在。如果 destinationDirectory 存在, * 这个方法将返回 true;如果不存在,则返回 false。 * */ if (!destinationDirectory.exists()) { /** * mkdirs(): 这是 File 类的一个方法,它会尝试创建此抽象路径名指定的目录, * 包括所有必需但不存在的父目录。如果目录已经存在或成功创建,该方法返回 true; * 如果由于某些原因无法创建目录(例如权限问题),则返回 false。 */ boolean created = destinationDirectory.mkdirs(); if (!created) { System.out.print("无法创建目标目录:" + destinationDirectory.getAbsolutePath()); return; } } try { FileUtils.copyFile(sourceFile, destinationFile); System.out.print("文件已成功的复制到:" + destinationFilePath); } catch (IOException e) { e.printStackTrace(); System.out.println("文件复制失败:" + e.getMessage()); } } public static void main(String [] args){ new FileDialogTest1(); } }
原文地址:https://blog.csdn.net/2302_76384361/article/details/143046424
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!