자바 의 파일 읽 기 및 저장 통계 폴 더 및 파일 개수

4638 단어 자바
폴 더 아래 의 파일 (폴 더) 개수, 크기, 숨 길 지 여 부 를 재 귀적 으로 집계 합 니 다.
 
사용 한 클래스: File
 
통계 적 방법
FileUnit.java
import java.io.File;

public class FileUnit {
	static int filecount=0;
	static int menucount=0;
	static int size=0;
	static long time=0;
	
	/**
	 *                
	 * @param path   
	 * @return
	 */
	public static void CountFile(String Path){
		File file=new File(Path);
		
		
		if(!file.exists()){
			System.out.println("   ");
			return ;
		}
		
		
		File []fs=file.listFiles();//            。
		if (fs==null){
			//file       ,     
			size=(int) file.length();
			time = file.lastModified();
			filecount=1;

			System.out.println(file.getAbsolutePath()+"        "+time );
			return ;
		}
		
		//       Path        
		for(int i=0;i<fs.length;i++){
			File f=fs[i];
			if(f.isFile()){
				filecount++;
				size += (int) f.length();
				time = file.lastModified();

				
				//         
				//f.setReadOnly();
			}else if(f.isDirectory()){
				//    
				menucount++;
				System.out.println(f.getAbsolutePath());
				CountFile(f.getAbsolutePath());

			}			
		}		
	}

}

 
 
 
창:
UI.java
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

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


public class UI extends JFrame implements ActionListener{
	JLabel jInclude=new JLabel("  :\t0   ,0    ");
	JLabel jclass=new JLabel("  :\t  ");
	JLabel jSize=new JLabel("  :\t0KB(0  )");
	JLabel jTime=new JLabel("    :\t2014 5 21 ,18:36:01");//   
	JLabel jPath=new JLabel("  :\t");
	JLabel jProperties=new JLabel("  :         ? ");
	JButton choose = new JButton("  ");
	FileUnit f1=new FileUnit();
	JFileChooser jfc = new JFileChooser("E:\\");
	static char hidden=' ';
	
	public static void main(String[] args) {
		
		UI ui=new UI();
//		String s="E:\\hb\\Test";
//		f1.CountFile(s);
		ui.init();
		ui.initWighet();
		ui.setVisible(true);
		
		}
	
	public void init(){
		this.setSize(300,500);
		this.setDefaultCloseOperation(3);
		this.setTitle("     ");
		this.setLayout(null);
	}
	
	public void initWighet(){
		
		jclass.setBounds(20, 20, 200, 20);
		jPath.setBounds(20, 50, 200, 20);
		jSize.setBounds(20, 80, 200, 20);
		jInclude.setBounds(20, 110, 200, 20);
		jTime.setBounds(20, 140, 300, 20);
		jProperties.setBounds(20, 180, 200, 40);
		choose.setBounds(20, 300, 100, 40);
		choose.addActionListener(this);
		
		this.add(jclass);
		this.add(jPath);
		this.add(jSize);
		this.add(jInclude);
		this.add(jTime);
		this.add(jProperties);
		this.add(choose);
	}
	
	public void Test(String s){
		
		
		File f =new File(s);
		f1.CountFile(s);
		if(f.isHidden()){
			hidden=' ';
		}else{
			hidden=' ';
		}
		jPath.setText(s);
		jSize.setText("  :\t"+FileUnit.size/1024+"KB("+FileUnit.size+"  )");
		jProperties.setText("  :         ? "+hidden);
		jInclude.setText("  :\t"+FileUnit.filecount+"   ,"+FileUnit.menucount+"    ");
		if(FileUnit.menucount>0){
			jclass.setText("  :\t   ");
		}
		
	}

	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
		if(source.equals(choose)){
			int state = jfc.showOpenDialog(this);
			if (state == 0) {//        
				String str=jfc.getSelectedFile().getAbsolutePath();
				System.out.println(str);
				Test(str);//JFileChooser             .
			}
			
		}
		
		
	}
}

 
 
 
 
질문
1. 마지막 수정 시간 은 file. lastModified () 를 사용 합 니 다.롱 으로 되 돌아 갑 니 다. 시간 형식 으로 어떻게 바 꿔 야 할 지 모 르 겠 습 니 다.
2. JFileChooser 로 폴 더 를 선택 할 수 없습니다. 프로그램 에서 경 로 를 정의 하면 폴 더 의 개수 와 파일 의 총 크기 를 집계 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기