Как вывести временный файл в службу API на Java и удалить его в конце? - PullRequest
0 голосов
/ 12 сентября 2018

Я пишу службу API, которая извлекает данные из потока и выводит их в файл.Я не могу вывести его как поток, потому что я использую Swagger (теперь OpenAPI) 2.0, который не поддерживает выходные потоки (Swagger 3.0 поддерживает, но я не могу его использовать).

Что быСамый чистый способ сделать файл, вывести его через службу, а затем убедиться, что он был удален?

Сначала я подумал, что могу использовать временный файл и удалить его в предложении finally.Однако нет никакой гарантии, что файл завершил загрузку на стороне клиента до того, как это условие будет достигнуто, и файл будет удален.

Я прав?Неправильно?Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 12 сентября 2018

Я говорил об использовании closeable в комментариях. Вот и все.

Использование:

try (TempFile file = new TempFile("tempfile", ".txt")) {
    // do stuff with file
} catch (IOException e) {
    // error handling.
    // file should be automatically deleted.
}

TempFile:

public class TempFile implements AutoCloseable {

    private final File file;

    public TempFile(String prefix, String suffix) {
        this.file = File.createTempFile(prefix, suffix);
    }

    public File getFile() {
        return this.file;
    }

    @Override
    public void close() throws IOException {
        this.file.delete();
    }
}
...