千家信息网

Java怎么实现简单的文件管理器

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章主要介绍"Java怎么实现简单的文件管理器",在日常操作中,相信很多人在Java怎么实现简单的文件管理器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java怎
千家信息网最后更新 2025年11月11日Java怎么实现简单的文件管理器

这篇文章主要介绍"Java怎么实现简单的文件管理器",在日常操作中,相信很多人在Java怎么实现简单的文件管理器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java怎么实现简单的文件管理器"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

可以在指定目录下实现文件的创建、文件夹的创建、文件的复制、粘贴、删除、重命名、返回上一级目录、以及不同设备之间文件的发送

完整代码

package com.atguitu.java;public class FileDemo {        public static void main(String[] args) {                FileSystem fs = new FileSystem();                fs.start();        }}
package com.atguitu.java;import java.awt.BorderLayout;import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.File;import java.io.IOException;import java.util.Vector;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JList;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.ListSelectionModel;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;public class FileSystem {        JFrame frame; // 窗口        Container container; // 创中的容器对象        JPanel jPanel; // 创建面板        JButton btn1; // 创建按钮        JButton btn2;        JButton btn3;        JButton btn4;        JButton btn5;        JButton btn6;        JButton btn7;        JButton btn8;        JList fileList;// 列表框对象        Vector vector = new Vector(); // 列表框内容        String currentPath = "D:\"; // 当前显示路径        String copyPath = null; // 待拷贝路径        public FileSystem() {                frame = new JFrame("文件管理器");                frame.setBounds(200, 100, 800, 600); // 设置窗口大小和位置                frame.setLayout(new BorderLayout());                container = frame.getContentPane();                jPanel = new JPanel(); // 创建面板                jPanel.setLayout(new FlowLayout(FlowLayout.LEADING));                btn1 = new JButton("创建文件"); // 创建按钮                btn2 = new JButton("创建文件夹");                btn3 = new JButton("复制");                btn4 = new JButton("粘贴");                btn5 = new JButton("删除");                btn6 = new JButton("重命名");                btn7 = new JButton("返回上一级目录");                btn8 = new JButton("发送");                // 添加按钮事件                btn1.addActionListener(new ActionListener() {                        @Override                        public void actionPerformed(ActionEvent e) {                                // TODO Auto-generated method stub                                System.out.println("创建文件");                                int i = 1;                                String temp = currentPath + "newFile" + i + ".txt";                                while (new File(temp).exists()) {                                        i++;                                        temp = currentPath + "newFile" + i + ".txt";                                }                                FileUtil.createFile(temp);                                refreshFileList();                        }                });                btn2.addActionListener(new ActionListener() {                        @Override                        public void actionPerformed(ActionEvent e) {                                // TODO Auto-generated method stub                                System.out.println("创建文件夹");                                int i = 1;                                String temp = currentPath + "newDir" + i;                                while (new File(temp).exists()) {                                        i++;                                        temp = currentPath + "newFile" + i;                                }                                FileUtil.createDir(temp);                                refreshFileList();                        }                });                btn3.addActionListener(new ActionListener() {                        @Override                        public void actionPerformed(ActionEvent e) {                                // TODO Auto-generated method stub                                System.out.println("复制");                                if (fileList.getSelectedValue() != null) {                                        String selectFile = fileList.getSelectedValue().toString();                                        if (new File(currentPath + selectFile).exists()) {                                                copyPath = currentPath + selectFile;                                        }                                }                        }                });                btn4.addActionListener(new ActionListener() {                        @Override                        public void actionPerformed(ActionEvent e) {                                // TODO Auto-generated method stub                                System.out.println("粘贴");                                System.out.println("copyPath:" + copyPath);                                System.out.println("currentPath:" + currentPath);                                if (copyPath != null) {                                        if (new File(copyPath).isDirectory()) {                                                try {                                                        FileUtil.copyDirectiory(copyPath, currentPath);                                                } catch (IOException e1) {                                                        // TODO 自动生成的 catch 块                                                        e1.printStackTrace();                                                }                                        } else if (new File(copyPath).isFile()) {                                                try {                                                        FileUtil.copyFile(copyPath, currentPath + copyPath.substring(copyPath.lastIndexOf("\")));                                                } catch (IOException e1) {                                                        // TODO 自动生成的 catch 块                                                        e1.printStackTrace();                                                }                                        }                                        refreshFileList();                                }                        }                });                btn5.addActionListener(new ActionListener() {                        @Override                        public void actionPerformed(ActionEvent e) {                                System.out.println("删除");                                if (fileList.getSelectedValue() != null) {                                        String selectFile = fileList.getSelectedValue().toString();                                        // System.out.println(selectFile == null);                                        System.out.println(currentPath + selectFile);                                        if (new File(currentPath + selectFile).exists()) {                                                FileUtil.deleteFileOrDir(currentPath + selectFile);                                                refreshFileList();                                        }                                }                        }                });                btn6.addActionListener(new ActionListener() {                        @Override                        public void actionPerformed(ActionEvent e) {                                // TODO Auto-generated method stub                                System.out.println("重命名");                                if (fileList.getSelectedValue() != null) {                                        String newName = JOptionPane.showInputDialog("请输入修改的文件名");                                        if (newName != null) {                                                String selectFile = fileList.getSelectedValue().toString();                                                if (new File(currentPath + selectFile).exists()) {                                                        FileUtil.renameFile(currentPath, selectFile, newName);                                                        refreshFileList();                                                }                                        }                                }                        }                });                btn7.addActionListener(new ActionListener() {                        @Override                        public void actionPerformed(ActionEvent e) {                                // TODO Auto-generated method stub                                String temp = currentPath.substring(0,                                                currentPath.substring(0, currentPath.length() - 1).lastIndexOf("\") + 1);                                System.out.println(temp);                                File f = new File(temp);                                if (f.isDirectory()) {                                        currentPath = temp;                                        refreshFileList();                                }                        }                });                btn8.addActionListener(new ActionListener() {                        @Override                        public void actionPerformed(ActionEvent e) {                                // 发送文件                                String fileName = (String) fileList.getSelectedValue();                                if (fileName != null && fileName.endsWith(".txt")) {                                        // 弹出输入IP地址的界面                                        new IPFrame(currentPath + fileName);                                }                        }                });                                // 面板中添加按钮                jPanel.add(btn1);                jPanel.add(btn2);                jPanel.add(btn3);                jPanel.add(btn4);                jPanel.add(btn8);                jPanel.add(btn5);                jPanel.add(btn6);                jPanel.add(btn7);                jPanel.add(btn8);                container.add(jPanel, BorderLayout.NORTH);                fileList = new JList(vector);                fileList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);                fileList.addListSelectionListener(new ListSelectionListener() {                        @Override                        public void valueChanged(ListSelectionEvent e) {                                // TODO Auto-generated method stub                                if (e.getValueIsAdjusting()) {                                        System.out.println(fileList.getSelectedValue());                                }                        }                });                fileList.addMouseListener(new MouseAdapter() {                        public void mouseClicked(MouseEvent e) {                                if (e.getClickCount() == 2) {                                        String temp = currentPath + fileList.getSelectedValue();                                        File f = new File(temp);                                        if (f.isDirectory()) {                                                currentPath = currentPath + fileList.getSelectedValue();                                                refreshFileList();                                        }                                }                        }                });                container.add(fileList, BorderLayout.CENTER);                frame.addWindowListener(new WindowAdapter() {                        public void windowClosing(WindowEvent arg0) {                                System.exit(1);                        }                });        }        public void refreshFileList() {                fileList.setBorder(BorderFactory.createTitledBorder(currentPath + "文件列表:"));                vector = FileUtil.fileList(currentPath);                fileList.setListData(vector);        }        public void start() {                refreshFileList();                frame.setVisible(true);                //启动接收文件的线程                new ReceiveThread().start();        }}
package com.atguitu.java;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Vector;public class FileUtil {        // 创建文件        public static boolean createFile(String destFileName) {                File file = new File(destFileName);                if (file.exists()) {                        System.out.println("创建文件" + destFileName + "失败,目标文件已存在!");                        return false;                }                if (destFileName.endsWith(File.separator)) {                        System.out.println("创建文件" + destFileName + "失败,目标文件错误!");                        return false;                }                if (!file.getParentFile().exists()) {                        System.out.println("目标文件所在目录不存在,准备创建它!");                        if (!file.getParentFile().mkdirs()) {                                System.out.println("创建目标文件所在目录失败!");                                return false;                        }                }                try {                        if (file.createNewFile()) {                                System.out.println("创建文件" + destFileName + "成功!");                                return true;                        } else {                                System.out.println("创建文件" + destFileName + "失败!");                                return false;                        }                } catch (IOException e) {                        e.printStackTrace();                        System.out.println("创建文件" + destFileName + "失败!" + e.getMessage());                        return false;                }        }        // 创建文件夹        public static boolean createDir(String destDirName) {                File dir = new File(destDirName);                if (dir.exists()) {                        System.out.println("文件夹创建" + destDirName + "失败,目标文件夹已经存在");                        return false;                }                if (!destDirName.endsWith(File.separator)) {                        destDirName = destDirName + File.separator;                }                        if (dir.mkdirs()) {                        System.out.println("文件夹创建" + destDirName + "成功!");                        return true;                } else {                        System.out.println("文件夹创建" + destDirName + "失败!");                        return false;                }        }        // 删除文件        public static boolean deleteFileOrDir(String path) {                File dir = new File(path);                boolean success = true;                if (dir.isDirectory()) {                        String[] children = dir.list();                        for (int i = 0; i < children.length; i++) {                                success = deleteFileOrDir(dir.getAbsolutePath()+"\"+children[i]);                                if (!success) {                                        return false;                                }                        }                        success = dir.delete();                } else {                        success = dir.delete();                }                return success;        }        // 复制文件        public static void copyFile(String sPath, String tPath) throws IOException {                File sourceFile = new File(sPath);                File targetFile = new File(tPath);                        FileInputStream input = new FileInputStream(sourceFile);                BufferedInputStream inBuff = new BufferedInputStream(input);                FileOutputStream output = new FileOutputStream(targetFile);                BufferedOutputStream outBuff = new BufferedOutputStream(output);                byte[] b = new byte[1024 * 5];                int len;                while ((len = inBuff.read(b)) != -1) {                        outBuff.write(b, 0, len);                }                outBuff.flush();                inBuff.close();                outBuff.close();                output.close();                input.close();        }        // 复制文件夹        public static void copyDirectiory(String sDir, String tDir) throws IOException {                (new File(tDir)).mkdirs();                File[] file = (new File(sDir)).listFiles();                for (int i = 0; i < file.length; i++) {                        if (file[i].isFile()) {                                File sourceFile = file[i];                                File targetFile = new File(new File(tDir).getAbsolutePath() + File.separator + file[i].getName());                                copyFile(sourceFile.getAbsolutePath(), targetFile.getAbsolutePath());                        }                        if (file[i].isDirectory()) {                                String dir1 = sDir + "/" + file[i].getName();                                String dir2 = tDir + "/" + file[i].getName();                                copyDirectiory(dir1, dir2);                        }                }        }        // 文件重命名        public static void renameFile(String path, String oldname, String newname) {                if (!oldname.equals(newname)) {                        File oldfile = new File(path + "/" + oldname);                        File newfile = new File(path + "/" + newname);                        if (!oldfile.exists()) {                                return;                        }                        if (newfile.exists())                                System.out.println(newname + "文件名已经存在!");                        else {                                oldfile.renameTo(newfile);                        }                } else {                        System.out.println("文件名未发生改变");                }        }        // 得到文件列表        public static Vector fileList(String path) {                Vector vector = new Vector();                File[] fl = new File(path).listFiles();                for (int i = 0; i < fl.length; i++) {                        if (fl[i].isFile()) {                                vector.add(fl[i].getName());                        }                        else if (fl[i].isDirectory()) {                                vector.add(fl[i].getName() + "\");                        }                }                return vector;        }}
package com.atguitu.java;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTextField;public class IPFrame extends JFrame{        private JLabel lblIp;        private JTextField txtIp;        private JButton btnIp;        private JLabel lblMyIp;                private String fileName;                public IPFrame(String fileName) {                this.fileName = fileName;                this.getContentPane().setLayout(null);                                lblIp = new JLabel("接收方IP");                this.getContentPane().add(lblIp);                lblIp.setBounds(20, 20, 60, 25);                                txtIp = new JTextField();                this.getContentPane().add(txtIp);                txtIp.setBounds(70, 20, 100, 25);                                btnIp = new JButton("发送");                this.getContentPane().add(btnIp);                btnIp.setBounds(180, 20, 80, 25);                btnIp.addActionListener(new ActionListener() {                                                @Override                        public void actionPerformed(ActionEvent e) {                                //点击发送按钮时,会执行此方法                                SendThread sendThread = new SendThread(fileName, txtIp.getText());                                sendThread.start();                        }                });                                this.setBounds(200, 100, 350, 140);                this.setVisible(true);                this.setDefaultCloseOperation(EXIT_ON_CLOSE);        }        public JLabel getLblIp() {                return lblIp;        }        public void setLblIp(JLabel lblIp) {                this.lblIp = lblIp;        }        public JTextField getTxtIp() {                return txtIp;        }        public void setTxtIp(JTextField txtIp) {                this.txtIp = txtIp;        }        public JButton getBtnIp() {                return btnIp;        }        public void setBtnIp(JButton btnIp) {                this.btnIp = btnIp;        }        public JLabel getLblMyIp() {                return lblMyIp;        }        public void setLblMyIp(JLabel lblMyIp) {                this.lblMyIp = lblMyIp;        }        }
package com.atguitu.java;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class ReceiveThread extends Thread{        @Override        public void run() {                try {                        ServerSocket server = new ServerSocket(6687);                        System.out.println("ServerSocket启动...");                        while (true) {                                Socket s = server.accept();                                System.out.println("连接成功!");                                InputStream inputStream=s.getInputStream();                        File file = new File("E:/shiyan.txt");                        String fileName = file.getName();                        OutputStream outputstream = new FileOutputStream(file);                        int length=0;                        byte[] buff = new byte[4096];                        while((length=inputStream.read(buff))!=-1) {                                outputstream.write(buff,0,length);                        }                        outputstream.close();                        inputStream.close();                        s.close();                        server.close();                        System.out.println("文件传输完毕!文件存储名称为:"+fileName);                        }                } catch (IOException e) {                        e.printStackTrace();                        System.out.println("启动失败...");                }        }}
package com.atguitu.java;import java.io.*;import java.net.Socket;public class SendThread extends Thread{        private String filePath;        private String ipAddress;                public SendThread(String filePath) {                super();                this.filePath = filePath;        }                public SendThread(String filePath, String ipAddress) {                super();                this.filePath = filePath;                this.ipAddress = ipAddress;        }        @Override        public void run() {                try{                                                File file=new File(filePath);                        FileInputStream fileInputstream = new FileInputStream(file);                        Socket socket=new Socket(ipAddress, 6687);                        OutputStream outputStream=new DataOutputStream(socket.getOutputStream());                        if(!file.exists()){                                return;                        }else{                                String fileName = file.getName();                                long length = file.length();                                int len = 0;                                byte[] buff = new byte[4096];                                while((len = fileInputstream.read(buff))!=-1) {                                        outputStream.write(buff,0,len);                                }                                System.out.println("开始发送文件,文件名称为:"+fileName+"  文件大小"+length);                                                                outputStream.close();                                socket.close();                                fileInputstream.close();                                                                System.out.println("发送文件完毕!");                        }                } catch (IOException e) {                        e.printStackTrace();                }        }}

到此,关于"Java怎么实现简单的文件管理器"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0