2015-12-17 2 views
0

Может ли кто-нибудь помочь мне пропустить файл с расширением «читать» в моем коде?Пропустить дубликат файла с помощью java

У меня есть два файла в моей папке:

  • 123.csv
  • 123.csv.read

После выполнения каждого файла CSV преобразуется в ".csv.read", но если тот же файл снова появится, этот файл должен быть пропущен.

Как и этот файл (123.csv.read), уже обработан, поэтому, если такой же новый файл (123.csv) приходит, я хочу, чтобы его пропустили.

В моем коде ниже, после обработки файла 123.csv, папка имеет только один файл 123.csv.read. break не ведет себя так, как я ожидал.

context.Str = ((String)globalMap.get("tFileList_1_CURRENT_FILEPATH")); 

String extension = context.Str.substring(context.Str.lastIndexOf(".") + 1); 

if (extension.equals("read")) 
{ 
    break; 
} 
else { 
    System.out.println("Good File to Process"); 
} 
+1

Пожалуйста, отредактируйте ваше сообщение и отформатируйте свой код, выбрав его и нажав Ctrl + K – Arc676

+0

@ Arc676, Done !!!!! – drill

+1

«Перерыв не ведет себя так, как я ожидал». Что вы ожидали от этого? – azurefrog

ответ

0

Вы можете попробовать это:

Например 123.csv файл пришел снова, то это проверить, существуют ли в папке для чтения

if(!new File(123.csv+".read").exist()) { 
     // if this file is not exist, then it means that this has not been processed 
     // process the file 
} else { 
     // do some other staff 
} 

Edit: Или вы можете попробовать это

public static void main(String[] args) throws Exception { 
     File dir = new File("your_path"); 
     File[] processedFiles = dir.listFiles(new FileFilter() { 
      @Override 
      public boolean accept(File pathname) { 
       return pathname.getName().contains("read"); 
      } 
     }); 
     List<File> files = Arrays.asList(processedFiles); 
     File[] noneProcessedFiles = dir.listFiles(new FileFilter() { 
      @Override 
      public boolean accept(File pathname) { 
       return !pathname.getName().contains("read"); 
      } 
     }); 

     for (File file : noneProcessedFiles) { 
      if (!files.stream().findAny().get().getName().contains(file.getName())) { 
       // process the file.... 
       System.out.println("Not found ... " + file.getName()); 
      } else { 
       // do some other staff.... 
       System.out.println("Fount the file"); 
      } 
     } 
    } 
+0

if (extension.equals ("read")) { { Что будет здесь, если я хочу пропустить этот файл с расширением .read? } – drill

+0

Я не знаю, где вы получаете файлы и где вы сохраняете файлы. Но я думаю, что вы получите файл, в котором у вас все еще нет расширения .read, вы можете проверить его, если вы его уже обработали, если это так, тогда вы можете сделать, как я уже говорил, иначе вы можете более подробно рассказать свой вопрос –

+0

Файлы csv поступают из источника и хранятся в папке FOLDER. Его процесс ETL. Поэтому после получения файлов в папку etl обрабатывайте эти файлы и после обработки конвертируйте этот файл в файл file.csv.read. Я беспокоюсь, что если какой-либо файл пришел, который уже был обработан и преобразован в расширение file.csv.read, не следует повторять итерацию и преобразован в файл.csv.alreadyprocessed Надеюсь, теперь у вас появилась идея, что пытаться сказать? – drill

0
public static void listFile(final String folder, final String ext) { 

     ExtFilter filter = new ExtFilter(ext); 
     File dir = new File(folder); 

     if (dir.isDirectory() == false) { 
      System.out.println("Directory does not exists : " + FindFileExtension.FILE_DIR); 
      return; 
     } 

     // list out all the file name and filter by the extension 
     String[] list = dir.list(filter); 

     if (list.length == 0) { 
      System.out.println("no files end with : " + ext); 
      return; 
     } 

     for (String file : list) { 
      String temp = new StringBuffer(FindFileExtension.FILE_DIR).append(File.separator).append(file).toString(); 
      System.out.println("file : " + temp); 
      // do your stuff here this file is not processed 
     } 



    } 

    public static class ExtFilter implements FilenameFilter { 

     private String ext; 

     public ExtFilter(final String ext) { 
      this.ext = ext; 
     } 

     public boolean accept(final File dir, final String name) { 
      return (name.endsWith(this.ext)); 
     } 
    } 

Вы можете сделать что-то подобное, это может вам помочь

Смежные вопросы