2016-12-28 2 views
1

Во время цикла мой список содержит файлы csv, я хочу получить имя файла, под которым я сохраню свой вывод.Извлечь имя файла из списка

Пример:

Список файлов: t1.csv, t2.csv, t3.csv

список Вывод должен выглядеть: t1.xml, t2.xml, t3.xml

sample.java

List<String> csvFiles = new ArrayList<String>();        
try { 
    File[] files = new File(textCSV.getText()).listFiles(); 
    for (File file : files) { 
     if (file.isFile()) { 
      csvFiles.add(file.getName()); 
     } 
    } 
    for(int i=0;i<csvFiles.size();i++) { 
     System.out.println(csvFiles.get(i));       
     String Output = ".xml" //how to put here csv name 
    } 
} 
+1

'System.out.println (csvFiles.get (i) .replace (" .csv "," .xml "));' – shmosel

+0

thx, это тоже работает! – 4est

ответ

1

Вы можете переписать вот так.

List<String> csvFiles = new ArrayList<String>();        
    try { 
     File[] files = new File(textCSV.getText()).listFiles(); 
     for (File file : files) { 
      if (file.isFile()) { 
       csvFiles.add(file.getName()); 
      } 
     } 
     for(int i=0;i<csvFiles.size();i++) 
     { 
      System.out.println(csvFiles.get(i));    

      String Output = csvFiles.get(i).substring(0, csvFiles.get(i).indexOf(".")) + ".xml" //how to put here csv name 
     } 
    } 
+0

спасибо, он работает отлично! – 4est

+2

Возможно, вам стоит заменить 'indexOf' на' lastIndexOf', если файл содержит несколько «.». (точка) в имени файла :) –

1

Есть 3 способа, которыми я могу думать, где вы можете извлечь только имя файла.

  1. Использование Apache Commons библиотека

    FilenameUtils.removeExtension(file.getName()); 
    
  2. В случае, если ваши файлы будут всегда содержат, по меньшей мере, одно расширение (по крайней мере один "" в имени файла)

    file.getName().substring(0, file.getName().lastIndexOf(".")); 
    
  3. Если есть файлы, которые не содержат никаких расширений

    int index = file.getName().lastIndexOf("."); 
    if (index == -1) { 
        file.getName(); 
    } else { 
        file.getName().substring(0, index); 
    } 
    

Вы можете заменить csvFiles.add(file.getName()); к csvFiles.add(); с аргументом, как любой из указанных выше линий.

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