Отфильтровать текстовые файлы - PullRequest
0 голосов
/ 15 февраля 2020

Код отделяет файлы от каталогов.

Я пытаюсь отфильтровать текстовые файлы (.txt) и распечатать оставшиеся файлы.

Я не хочу, чтобы текстовые файлы печатались вообще. Я хочу, чтобы код был реализован после оператора if if (listOfFiles[i].isFile()) {, поэтому после того, как он проверит, является ли данное значение фактическим файлом, а затем определит, является ли он текстовым файлом, и, если какой-либо тест не пройден, добавьте его в listOfFiles список массивов.

Нужна помощь

import java.io.BufferedInputStream;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class Exc_3 {

    public static void main(String[] args) {
        File folder = new File("C:\\Users\\skyla\\Desktop");
        File[] listOfFiles = folder.listFiles();
        List<String> files = new ArrayList<>();
        List<String> directories = new ArrayList<>();

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

            if (listOfFiles[i].isFile()) {
                    files.add(listOfFiles[i].getName());
            } else if (listOfFiles[i].isDirectory()) {
                directories.add(listOfFiles[i].getName());
            }
        }
        System.out.println("List of files :\n---------------");
        for (String fName : files)
            System.out.println(fName);

        System.out.println("\nList of directories :\n---------------------");
        for (String dName : directories)
            System.out.println(dName);
    }
}

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Поскольку вы проверяете только расширение файла ".txt", вы можете проверить имя с помощью String.endsWith (". Txt")

if (listOfFiles[i].isFile()) {
   if (listOfFiles[i].getName().endsWith(".txt")) {
      files.add(listOfFiles[i].getName());
   }
}
0 голосов
/ 15 февраля 2020

Почему бы вам не использовать фрагмент кода ниже. Вы также можете использовать его в функции, которая проверяет, являются ли ваши файлы .txt файлом, создавая boolean true, если mimeType="text/plain"

Path path = FileSystems.getDefault().getPath("myFolder", "myFile");
String mimeType = Files.probeContentType(path);

Удачи

...