Java: невозможно переопределить postVisitDirectory - PullRequest
0 голосов
/ 22 марта 2020

Я написал специальную программу для обхода каталога и печати всех имен каталогов и файлов в файл, но компилятор выдает ошибку, которая говорит: «dirWalkerPrinter \ DirWalkerPrinter. java: 52: error: метод делает не переопределять или не реализовывать метод из супертипа ". Код программы следующий:

/**
 * This program walks a directory tree
 * and prints out the directory name and the file names under it.
 * @author Michael Mei
 * @version 1.0 22-03-2020
 */

package walkDirectory;

import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.*;
import static java.nio.file.FileVisitResult.*;
import static java.nio.file.FileVisitOption.*;
import java.nio.charset.StandardCharsets;
import java.util.*;

public class DirWalkerPrinter extends SimpleFileVisitor<Path> {
    private Path outPath;
    private Writer out;
    private int fileCount;
    private int dirCount;

    DirWalkerPrinter (Path outPath) throws IOException {
        this.outPath = outPath;
        out = Files.newBufferedWriter(outPath, StandardCharsets.UTF_16, StandardOpenOption.WRITE);
    }

    public int getFileCount () {
        return fileCount;
    }

    public int getDirCount () {
        return dirCount;
    } 

    public void writeResults(Path p) throws IOException {
        out.write(p.toString());
        out.write("\n");
    }

    public void done () throws IOException {
        out.write(fileCount + " of files found in " + dirCount);
    }

    @Override
    public FileVisitResult visitFile (Path file, BasicFileAttributes attrs) throws IOException {
        writeResults(file.getFileName());
        fileCount++;
        return CONTINUE;
    }
    @Override  // Error message points to this line
    public FileVisitResult postVisitDirectory (Path dir, BasicFileAttributes attrs) throws IOException {
        writeResults(dir);
        dirCount++;
        return CONTINUE;
    }
    @Override
    public FileVisitResult visitFileFailed (Path file, IOException e) {
        System.err.println(e);
        return CONTINUE;
    }

    public static void main(String[] args) throws IOException {
        if (args.length < 2) {
        System.err.println("java DirWalkerPrinter source-path destination-file");
        System.exit(-1);
    }
        Path startingDir = Paths.get(args[0]);
        Path writeToDir = Paths.get(args[1]);
        DirWalkerPrinter dirWalkerPrinter = new DirWalkerPrinter(writeToDir);
        Files.walkFileTree(startingDir, dirWalkerPrinter);
        dirWalkerPrinter.done();
        int fileCount = dirWalkerPrinter.getFileCount();
        int dirCount = dirWalkerPrinter.getDirCount();
        System.out.println(fileCount + " of files found in " + dirCount);
    }
}

Спасибо за помощь.

1 Ответ

1 голос
/ 22 марта 2020

Удалите аннотацию @Override из postVisitDirectory, если вы хотите переопределить ее. используйте одну и ту же подпись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...