日常生活中的小小實做,
依照日期把檔案分類到專屬的資料夾中.
程式很簡單但是卻寫了一整天 = = ,
分三部分, 第一部分 main 就是定資料夾, 在用第二部分的 print 印出來,
印的同時利用第三部分 settime 把每個檔案的建立時間顯示出來, 以方便做比較,
在比較建造日期後, 比對成功就呼叫第四部分, 把檔案移至對應的資料夾中.
可以在改進的地方應該是,
1. 把輸入目前路徑, 目標路徑, 單獨列出讓使用者好修改
2. 日期借面 A日到B日的檔案坐轉移
3. 函式寫得很醜, 可以在改進囉~
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class File_mvoe_2{
public static void main(String args[])throws IOException{
String path = "M:\\FTP";
File f = new File(path);
print(f,1,path);
}
private static void print(File f, int level,String path){
String pl = "";
for(int i = 0 ; i < level ; i++){
pl +="\t";
}
File[] child = f.listFiles();
for(int i = 0; i < child.length ; i++){
String s = child[i].getName();
settime(path,s);
if(child[i].isDirectory()){
path = path +"\\"+ child[i].getName();
print(child[i], level+1, path);
}
}
}
private static void settime(String inputpath, String name){
try{
File file = new File(inputpath+"\\"+name);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(file.lastModified());
Path path = Paths.get(inputpath+"\\"+name);
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
c.setTimeInMillis(attrs.creationTime().toMillis());
String da = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
//System.out.println("DA: "+da);
int i = 0;
if(da.equals("2015-10-21") ){
move(inputpath, name, i);
}
}catch(IOException e){
e.printStackTrace();
}
}
private static void move(String inputpath, String name, int i ){
File source = null;
File destFile = null;
File directory = null;
boolean rt = false;
try{
source = new File(inputpath+"\\"+name);
String Target = "M:\\ftp TMP\\08.21";
directory = new File(Target);
if(!directory.isDirectory()){
directory.mkdirs();
}
destFile = new File(Target+"\\"+name);
rt = source.renameTo(destFile);
//System.out.println("rt: "+rt+" : "+name);
}catch(Exception e){
}
}
}
參考資料:
顯示基本資料
http://bioankeyang.blogspot.tw/2015/01/java.html
顯示資料夾資料
http://ced425.pixnet.net/blog/post/3368206-java.io.file%E9%A1%9E%E7%B7%B4%E7%BF%92
移動資料
http://blog.csdn.net/lfdfhl/article/details/8302605
這是比較簡單的檔案移動程式
import java.io.*;
public class File_mvoe{
public static void main(String args[]){
File source = null; // 想要移動的檔案
File directory = null; // 想要移動到的目的地資料夾
File destFile = null; // 移動過去的資料夾路徑+檔案名稱(可以自取)
boolean rt = false;
try{
source = new File("M:\\A\\DCS-9202009010502073601.jpg");
directory = new File("M:\\B");
destFile = new File("M:\\B\\DCS-9202009010502073601.jpg");
//判斷目標資料夾是否存在, 不存在就建立新的
if (directory.isDirectory()) {
System.out.println("Directory is exist.");
}else{
directory.mkdirs();
System.out.println("Directory is not exist, so creat .");
}
// 要移動的檔案是不是存在
if(source.exists()){
System.out.println("File is exists");
}else{
System.out.println("File is not exists");
}
// 用rename 方法移動檔案, 會回傳booblean 回去, 才知道是不是有移動成功
rt = source.renameTo(destFile);
System.out.println("File renamed: "+ rt);
}catch(Exception e){
e.printStackTrace();
}
}
}
沒有留言:
張貼留言