文件计数器

为了熟悉文件的基本操作,写了一个文件计数器 .. 界面有些简陋..

 

 

 

1: 文件计数的具体实现

import java.io.File;

import javax.swing.JOptionPane;

/**
 * 指定路径下文件夹和文件的数目及大小.
 * @author d.s
 *z
 */
public class FileCount {

	/**
	 * 得到文件数目
	 * 
	 * @param path
	 *            :指定的路径
	 * @return 文件个数
	 */
	public int fCount(String path) {
		int countF = 0;
		File file = new File(path);

		// 路径存在时:
		if (file.exists()) {

			// 该路径下是一个文件的时候
			if (file.isFile()) {
				System.out.println("文件路径为:" + file.getAbsolutePath());
				countF++;
			}
			if (file.isDirectory()) {// 该路径下是一个文件夹的时候

				// 依次访问该文件夹下的所有文件和文件夹.
				File f[] = file.listFiles();
				for (int i = 0; i < f.length; i++) {
					// 递归调用fCount方法
					countF += fCount(f[i].getAbsolutePath());
				}
			}
		} else {
			JOptionPane.showMessageDialog(null, "统计文件数目的路径错误!!!");
		}
		
		return countF;
	}

	/**
	 * 该路径下的文件夹数目
	 * 
	 * @param path指定的路径
	 * @return 文件夹数目
	 */
	public int Dircount(String path) {
		int countD = 0;
		File file = new File(path);

		// 如果路径正确
		if (file.exists()) {

			// 是文件夹的时候
			if (file.isDirectory()) {
				System.out.println(file.getAbsolutePath());
				countD++;
				File f[] = file.listFiles();
				for (int i = 0; i < f.length; i++) {
					// 递归
					countD += Dircount(f[i].getAbsolutePath());
				}
			}
		} else {
			JOptionPane.showMessageDialog(null, "统计文件夹的路径错误!!!");
		}
		
		return countD;

	}

	/**
	 * 得到指定路径下所有文件的大小之和
	 * 
	 * @param path指定的路径
	 * @return 指定路径下所有文件的大小之和
	 */
	public long fileLength(String path) {
		long length = 0;
		File file = new File(path);

		// 如果路径正确
		if (file.exists()) {
			//如果是文件
			if(file.isFile()){
				length += file.length();
			}
			
			//如果是文件夹
			if(file.isDirectory()){
				File f[] = file.listFiles();
				for(int i = 0; i< f.length;i++){
					length += fileLength(f[i].getAbsolutePath());
				}
			}
		}
		
		return length;
	}
}

 

 

2: 计数器的一个简单界面

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class FileCountUI extends JFrame {
	public static void main(String args[]) {
		FileCountUI ui = new FileCountUI();
		ui.showUI();
	}

	public void showUI() {
		this.setTitle("FileCount");
		this.setSize(350, 150);
		JLabel jl = new JLabel("指定目录:");
		JTextField jf = new JTextField(20);
		this.add(jl);
		this.add(jf);
		JButton but1 = new JButton("文件数目");
		JButton but2 = new JButton("文件夹数目");
		JButton but3 = new JButton("文件的总大小");
		
		//加按钮
		this.add(but1);
		this.add(but2);
		this.add(but3);
		
		this.setLayout(new FlowLayout());//流体式布局
		this.setLocationRelativeTo(null);//居中显示
		this.setResizable(false);//不可改变大小
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭界面时退出程序
		this.setVisible(true);//显示窗体

		// 添加监听器
		ActionListenerImpl l = new ActionListenerImpl(jf);
		but1.addActionListener(l);
		but2.addActionListener(l);
		but3.addActionListener(l);

	}

}

 

 

 

3:监听器

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JTextField;

public class ActionListenerImpl implements ActionListener{

	private JTextField jf = new JTextField();
	
	public ActionListenerImpl(JTextField jf){
		this.jf = jf;
	}
	
	public void actionPerformed(ActionEvent e) {
		
		JButton but= (JButton)e.getSource();//获取事件源
		
		FileCount fc = new FileCount();
		if(but.getText() == "文件数目"){
			System.out.println("文件数目为:"+fc.fCount(jf.getText()));
		}
		if(but.getText() == "文件夹数目"){
			System.out.println("文件夹的数目为:"+fc.Dircount(jf.getText()));
		}
		if(but.getText() == "文件的总大小"){
			System.out.println(fc.fileLength(jf.getText()));
		}
		
	}
	

}

 

 

界面如下


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
其他文件占用的状态。 好的,这是一个关于文件管理程序的问题。这里提供一种C语言编写的简单文件管理程序,可供参考: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_FILE_COUNT 4 // 最多允许打开4个文件 #define MODE_READ 0 // 文件保护方式:可读 #define MODE_READ_WRITE 1 // 文件保护方式:可读可写 #define MODE_WRITE 2 // 文件保护方式:可写 // 用户打开文件表项结构体 typedef struct { char filename[20]; // 文件名 int mode; // 文件保护方式 int status; // 状态:0表示空表项,1表示占用,2表示被占用 } UOFItem; // 用户打开文件表结构体 typedef struct { UOFItem items[MAX_FILE_COUNT]; // 用户打开文件表项数组 int count; // 用户打开文件计数器 } UOF; // 用户文件目录项结构体 typedef struct { char filename[20]; // 文件名 int mode; // 文件保护方式 } UFDItem; // 文件目录结构体 typedef struct { UFDItem ufd[100]; // 用户文件目录 int count; // 用户文件目录计数器 } MFD; int main() { MFD mfd; UOF uof; int i; // 初始化文件目录 mfd.count = 0; // 初始化用户打开文件表 uof.count = 0; for (i = 0; i < MAX_FILE_COUNT; i++) { uof.items[i].status = 0; } // 添加文件到用户文件目录 strcpy(mfd.ufd[mfd.count].filename, "file1.txt"); mfd.ufd[mfd.count].mode = MODE_READ_WRITE; mfd.count++; strcpy(mfd.ufd[mfd.count].filename, "file2.txt"); mfd.ufd[mfd.count].mode = MODE_READ; mfd.count++; strcpy(mfd.ufd[mfd.count].filename, "file3.txt"); mfd.ufd[mfd.count].mode = MODE_WRITE; mfd.count++; // 打开文件 int fileIndex = 0; for (i = 0; i < mfd.count; i++) { if (strcmp(mfd.ufd[i].filename, "file1.txt") == 0) { fileIndex = i; break; } } // 检查文件是否已经打开 for (i = 0; i < MAX_FILE_COUNT; i++) { if (uof.items[i].status == 1 && strcmp(uof.items[i].filename, "file1.txt") == 0) { printf("文件已经打开!\n"); return 0; } } // 检查用户打开文件表是否已经满 if (uof.count == MAX_FILE_COUNT) { printf("用户打开文件表已经满!\n"); return 0; } // 添加文件到用户打开文件表 for (i = 0; i < MAX_FILE_COUNT; i++) { if (uof.items[i].status == 0) { strcpy(uof.items[i].filename, mfd.ufd[fileIndex].filename); uof.items[i].mode = mfd.ufd[fileIndex].mode; uof.items[i].status = 1; uof.count++; break; } } // 显示用户打开文件表 printf("用户打开文件表:\n"); for (i = 0; i < MAX_FILE_COUNT; i++) { if (uof.items[i].status == 1) { printf("文件名:%s,保护方式:%d\n", uof.items[i].filename, uof.items[i].mode); } } return 0; } ``` 这个程序实现了文件目录、用户文件目录、用户打开文件表的定义和初始化,并提供了打开文件的功能。在打开文件时,程序会先检查文件是否已经打开,如果已经打开则给出提示,如果用户打开文件表已经满则也给出提示。如果文件未打开且用户打开文件表未满,则将文件添加到用户打开文件表中,并显示用户打开文件表的内容。 需要注意的是,这个程序仅提供了文件管理的基本功能,实际的文件管理程序需要更多的功能和安全性措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值