一.个人信息
姓名:李徽
班级:计科20-1
学号:202003010021
二.项目功能结构图
三.个人负责模块和任务说明
窗口框架,预览文件,文件重命名,统计文件,复制文件,团队博客
四.负责模块功能的关键代码
// 窗口框架
public class FileFrame extends JFrame { //继承JFrame类
private FileListPanel filelistShow;//文件列表面板
private PathPanel pathPanel;//路径显示面板和按钮
private String mouseSelectFileName;
private MouseRightPopup popup;//p553 弹出菜单组件
public FileFrame() {
//类实例域初始化-
filelistShow = new FileListPanel();//文件窗口
pathPanel = new PathPanel();//文件面板
mouseSelectFileName = new String("");
popup = new MouseRightPopup();//菜单组件
//设置窗口关闭方法
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭时退出程序;
//设置窗口位置和大小(由系统平台决定)
Toolkit kit = Toolkit.getDefaultToolkit();// Toolkit.getDefaultToolkit()获取获取显示器屏幕大小
Dimension screen = kit.getScreenSize();//封装了一个构件的高度和宽度,获得屏幕大小
this.setSize(screen.width / 2, screen.height / 2);//设置大小
this.setLocationByPlatform(true);//将程序的位置交给系统选择(位置由系统确定)
//实现路径文本框可以直接控制目录跳转
pathTextToFile();
//实现鼠标控制文件显示列表和右键显示菜单
mouseControlFilelist();
//实现右键菜单功能
mouseRightMenuFunction();
//控制组件摆放位置
this.add(filelistShow, BorderLayout.CENTER);//边界布局
this.add(pathPanel, BorderLayout.NORTH);//窗体布局
}
//复制文件
public boolean copyWindow(String path) {
//消息提示框
String inputContent = JOptionPane.showInputDialog(FileFrame.this,"请输入你的目标地址","");
try {
java.io.File fileIn = new java.io.File(path); //用路径名生成源文件
java.io.File fileOut = new java.io.File(inputContent + "\\" + mouseSelectFileName); //用路径名生成目标文件
FileInputStream fin = new FileInputStream(fileIn); //得到文件输入流
//对文件数据以字节的形式进行读取操作
FileOutputStream fout = new FileOutputStream(fileOut); //得到文件输出流
byte[] bytes = new byte[1024]; //初始化字节数组,用于缓冲
int c;
while ((c = fin.read(bytes)) != -1) { //如果文件未读完
fout.write(bytes, 0, c); //将读取的字节数组写入目标文件输出流中
}
fin.close(); //关闭输入流
fout.close(); //关闭输出流
return true;
}
//代码区如果有错误,就会返回所写异常的处理。
catch (Exception e) {
return false;
}
}
//文件重命名
public boolean fileRemae(String path) {
String inputContent = JOptionPane.showInputDialog( //JOptionPane消息提示框
FileFrame.this, "请输入新的名字","" );
File f = new File(path);
File fn = new File(pathPanel.getPathInput() + "\\" + inputContent);//fn 文件路径
f.renameTo(fn);//将f重命名并移动到fn的路径
return true;
}
// 预览文件
public boolean readFile(String path) {
JFrame jFrame = new JFrame("预览");
jFrame.setSize(700, 600);//设置大小
jFrame.setLocationRelativeTo(FileFrame.this);//设置位置
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//释放当前窗口
JTextArea textshow;
textshow = new JTextArea(30, 58);//30行50列
jFrame.add(new JScrollPane(textshow));//加入面板
try {
File file = new File(path);//将通过textInput获取的字符串创建一个文件
//getText()方法,获取对象的文本内容
FileReader in = new FileReader(file);//字符输入流
BufferedReader in2 = new BufferedReader(in);//BufferedReader类从字符输入流中读取文本
String s = null;
while ((s = in2.readLine()) != null) {//行内容不为零
textshow.append(s + "\n");//append()方法,向当前字符串追加字符,读到每行结尾添加一个换行符,后呈现
}
in.close();//关闭字符流
in2.close();
} catch (IOException exp)//处理异常
{
textshow.append(exp.toString());
}
jFrame.setVisible(true);//设置为可显示
return true;
}
//统计文件夹内的文件数
public boolean countFiles(String path) {
int wenjian = 0;
int wenjianjia = 0;
File file = new File(path);
String[] files = file.list();//创建列表数组
for (String file1 : files) {//遍历,一个个赋值给file1
File fileS = new File(path + "\\" + file1);
if (fileS.isDirectory())//如果是文件夹
wenjianjia++;
else//不然就是文件
wenjian++;
}
// System.out.println("文件夹为"+wenjian+"文件数为"+wenjianjia);
JOptionPane.showMessageDialog(
FileFrame.this,
"该文件夹内有文件" + wenjian + "个,文件夹有" + wenjianjia + "个",
"统计",
JOptionPane.INFORMATION_MESSAGE
);
return true;
}
五.个人感想
通过这次课程设计,让我深深的感到自己的不足,我在今后的时间里会更加努力!
六.团队博客地址
https://blog.csdn.net/weixin_51406688/article/details/118107609?spm=1001.2014.3001.5501