3

我已经更新了我的代码来处理列出的场景 1. 检查空目录 2. 检查文件是否存在

当我尝试执行文件监视程序时,我还应该注意哪些其他事项?

我希望能够创建一些可以涵盖监视文件时可能发生的所有可能场景的东西,这样当我部署代码时,我可以快速读取输出并知道发生了什么

package filemon;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * @author LAI XUEYANG
 * @version $Revision: 1.0 $
 */
public class filemon {

    /**
     * Method main.
     * 
     * @param args
     *            String[]
     */
    public static void main(String[] args) {

        // Declare yesterday date with format as yyyyMMdd
        DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
        // Calendar yesterdayCal = Calendar.getInstance();

        // Declare today date with format as yyyyMMdd
        Calendar todayCal = Calendar.getInstance();
        String todayDate = dateFormat.format(todayCal.getTime());

        // Declaration of folder path
        File file = new File("D:\\TEST");

        // Declaration of file path
        Path filePath = Paths.get(file + "\\INCIF" + todayDate + ".txt");

        // yesterdayCal.add(Calendar.DATE, -1);
        // String yesterdayDate = dateFormat.format(yesterdayCal.getTime());

        try {
            checkEmptyDirectory(file, filePath);
        } catch (Exception e) {
            System.out.println(e);
        }
        // checkFileExist();
    }

    /**
     * Method checkFileExist.
     * 
     * @param filePath
     *            Path
     */
    private static void checkFileExist(Path filePath) {
        if (Files.exists(filePath)) {
            System.out.println("Filename: " + filePath.toString());
            System.out.println("Exist in location!");
        } else {
            System.out.println("Filename: " + filePath.toString());
            System.out.println("Does not exist in location!");
        }
    }

    /**
     * Method checkEmptyDirectory.
     * 
     * @param file
     *            File
     * @param filePath
     *            Path
     */
    private static void checkEmptyDirectory(File file, Path filePath) {
        if (file.isDirectory()) {
            if (file.list().length > 0) {
                checkFileExist(filePath);
            } else {
                System.out
                        .println("Directory specified does not contain any files!");
            }
        } else {
            System.out.println("Directory specified does not exist!");
        }
    }
}
4

7 回答 7

5

为了找到文件夹中的任何文件,请尝试这样做

File f= new File(filePathString);
File[] listOfFiles = f.listFiles(); 

if(listOfFiles.length > 0){
//
}else{
//
}
于 2013-09-16T08:31:08.107 回答
1

import java.io.*;
File file = new File(Path);
if(file.exists()){.........}

于 2013-09-16T10:50:26.590 回答
1

使用java.io.File

File f = new File(filePathString);
if(f.exists()) { /* do something */ }

在您的代码中:

File f = new File(filePath);
if(f.exists()) { 
    if(f.isDirectory()){ System.out.println("it's a folder"); }
    System.out.println("File location: " +filePath.toString());
    System.out.println("File exist in location!");
    System.exit(0);

}
于 2013-09-16T08:28:15.077 回答
0

我认为这可能会帮助您检查文件夹中是否存在文件!

    File folder = new File("/home/rahul/Documents/r/212/");
    f.listFilesForFolder(folder);

    }
public void listFilesForFolder(final File folder) {
    for (final File fileEntry : folder.listFiles()) {
        if (fileEntry.isDirectory()) {
            listFilesForFolder(fileEntry);
        } else {

            l.add(fileEntry.getName());
        }
    }

如果文件夹中存在文件,我的代码正在获取目录中所有可用文件的名称。

于 2013-09-18T08:32:37.603 回答
0

使用File#list()计算列出的文件:

File f = new File(filePathString);
int nOF = f.list().length; //add null check before

返回一个字符串数组,命名此抽象路径名表示的目录中的文件和目录。如果此抽象路径名不表示目录,则此方法返回 null。否则返回一个字符串数组,一个对应于目录中的每个文件或目录。结果中不包括表示目录本身和目录父目录的名称。每个字符串都是一个文件名,而不是一个完整的路径。

于 2013-09-16T08:31:00.927 回答
0

这应该这样做 http://www.mkyong.com/java/how-to-check-if-directory-is-empty-in-java/

public static void main(String[] args)
{   

File file = new File("\myFolder");

if(file.isDirectory()){

    if(file.list().length>0){

        System.out.println("Directory is not empty!");

    }else{

        System.out.println("Directory is empty!");

    }

}else{

    System.out.println("This is not a directory");

}
}
于 2013-09-16T08:31:56.557 回答
0

这里

"C:\\TEST" +todayDate +".txt"

您错过了文件夹分隔符。应该是:

"C:\\TEST\\" +todayDate +".txt"
于 2013-09-16T08:33:13.763 回答