Как остановить программу, если файл не существует в папке, использующей Java? - PullRequest
0 голосов
/ 27 февраля 2011

У меня есть программа, которая выбирает последние файлы из каталога и сжимает их в один файл.но я хочу остановить программу, если в каталоге нет файлов, и вывести сообщение об ошибке типа «В каталоге нет файлов»

Я попытался добавить это:

if (file.exists) {} else {}

но я не знаю, как вставить его в мой код.

Спасибо

{
    String source = "C:/Source";
    String target = "C:/Target";

    File sourceDir = new File(source);
    File[] files = sourceDir.listFiles();

    if(files.exists())

    Arrays.sort(files, new Comparator<File>()
    {
        public int compare(File f1, File f2)
        {
            return (int) (f2.lastModified() - f1.lastModified());
        }
    });

    // create the target directory
    File targetDir = new File(target);
    targetDir.mkdirs();

{  
    for(int i=0, length=Math.min(files.length, 12); i<length; i++)
        files[i].renameTo(new File(targetDir, files[i].getName()));


     PrintWriter pw = new PrintWriter(new FileOutputStream("C:/Joined/joined.txt"));
    File file = new File("C:/Target");

    File[] files2 = file.listFiles();

    for (int i = 0; i < files2.length; i++)
    {

      File currentFile = files2[i];

      System.out.println("Processing " + currentFile.getPath() + "... ");

      BufferedReader br = new BufferedReader(new FileReader(currentFile));

      String line = br.readLine();

      while (line != null)
      {
        pw.println(line);
        line = br.readLine();
      }
      br.close();
    }
    pw.close();

 Thread.sleep(2000);
try
{
    ProcessBuilder pb = new ProcessBuilder("c:\\Joined\\Join.bat");
   Process p = pb.start();

}
catch (IOException e)
 {
e.printStackTrace();
}
    }}}

Ответы [ 4 ]

2 голосов
/ 27 февраля 2011

Вместо использования метода System.exit () лучше использовать защитные предложения, чтобы предотвратить дальнейшее выполнение.Использование System.exit () не является хорошей практикой, поскольку оно резко останавливает поток.Идеальным решением было бы

if (file.exists()) 
   return; //Use appropriate returns according to the method signature.

// Block of code that does something with the file.
1 голос
/ 27 февраля 2011

Если sourceDir не ссылается на каталог, вы получите null из listFiles, так что это первое, что вы можете проверить.

Если это действительно относится к каталогу, а каталог пуст, вы просто получите пустой массив из listFiles. Так что вы можете использовать

if (files.length() == 0) {
    System.err.println("There is no files in the deirectory");
    System.exit(-1);
}
1 голос
/ 27 февраля 2011

Вы можете попытаться вызвать метод exit следующим образом:

System.exit(0);

Надеюсь, это поможет.

0 голосов
/ 27 февраля 2011

После

File[] files2 = file.listFiles();

вы можете сделать

if(files2.length == 0)
{
    System.err.println("Error - no files found!");

и, если вы хотите, чтобы программа полностью закрылась,

    System.exit(1); //0 denotes normal close, 1 denotes an error
}

и, если вы хотите, чтобы программачтобы перейти к следующему шагу,

    break; //exit the current loop
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...