我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java实战之简单的文件管理器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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<String> vector = new Vector<String>(); // 列表框内容
	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<String> fileList(String path) {
		Vector<String> vector = new Vector<String>();
		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实战之简单的文件管理器的文章就介绍到这了,更多相关java文件管理器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java实战之简单的文件管理器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android开发之简单文件管理器实现方法

本文实例讲述了Android开发之简单文件管理器实现方法。分享给大家供大家参考,具体如下: 这里运用Java I/O、ListActivity、Dialog、Bitmap等实现简单文件管理器,可以查看目录文件,修改文件名,删除文件,打开文件
2022-06-06

Java语言实现简单FTP软件 FTP远程文件管理模块实现(10)

本文为大家分享了FTP远程文件管理模块的实现方法,供大家参考,具体内容如下首先看一下界面:1、远程FTP服务器端的文件列表的显示将远程的当前目录下所有文件显示出来,并显示文件的属性包括文件名、大小、日期、通过javax.swing.JTab
2023-05-31

用java给文件加密的简单实现

思路:文件加密,简单来说就是把文件读取出来,把读取出来的字节码数组进行遍历,把每一个码值和一个秘钥(随便一个数)进行异或运算,将运算后的结果全部写入到文件里。因为文件的码值全都做了改变,文件自然就无法打开了,这是加密过程。解密过程就是再执行
用java给文件加密的简单实现
2023-12-23

如何使用C++实现一个简单的文件管理系统?

如何使用C++实现一个简单的文件管理系统?概述:文件管理系统是计算机中非常重要的一个功能模块,它负责对计算机中的文件进行创建、修改、删除等操作。本文将介绍如何使用C++编程语言实现一个简单的文件管理系统,通过该系统,可以实现对文件的基本管理
如何使用C++实现一个简单的文件管理系统?
2023-11-02

Android实战教程第一篇之最简单的计算器

从今天开始,本专栏持续更新Android简易实战类博客文章。和以往专栏不同,此专栏只有实例。每个实例尽量按照知识点对应相应一章节的内容去写,循序渐进。有些实例可能会与另一个专栏有重复的文章。开始本专栏的第一个简易案例:首先设置两个布局文件,
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录