Скачать созданный файл csv

Я создаю файл csv с библиотекой opencsv, но у меня есть небольшие трудности. Я следил за учебником в сети:

private void exportProducts() {

    String OBJECT_LIST_SAMPLE = "C:/tmp/object-list-sample.csv";

     try (
             BufferedWriter  writer = Files.newBufferedWriter(Paths.get(OBJECT_LIST_SAMPLE));

                CSVWriter csvWriter = new CSVWriter(writer,
                        CSVWriter.DEFAULT_SEPARATOR,
                        CSVWriter.NO_QUOTE_CHARACTER,
                        CSVWriter.DEFAULT_ESCAPE_CHARACTER,
                        CSVWriter.DEFAULT_LINE_END);
            ) {
                String[] headerRecord = {"Name", "Email", "Phone", "Country"};
                csvWriter.writeNext(headerRecord);

                csvWriter.writeNext(new String[]{"Sundar Pichai ♥", "[email protected]", "+1-1111111111", "India"});
                csvWriter.writeNext(new String[]{"Satya Nadella", "[email protected]", "+1-1111111112", "India"});

            } catch (IOException e) {
                LOG.error("", e);
            }

}

Все хорошо, файл создан правильно, но я хочу расширить этот. Я имею в виду

  1. Я не хочу использовать OBJECT_LIST_SAMPLE , но я хочу создать временный файл (File.creteTempFile), использовать его для записи строк
  2. В конце концов, я хочу скачать этот файл напрямую для пользователя.

Помогите пожалуйста мне!

Спасибо


person Gjord83    schedule 20.11.2017    source источник
comment
Затем создайте временный файл, а затем в зависимости от того, как вы общаетесь с пользователь, ответьте на запрос с содержимым файла, это также можно найти с помощью Google. Прямо сейчас у вас есть работающее решение и некоторая идея для обновления, но у вас нет исследований по этому поводу, начните с этого (сначала просто)   -  person AxelH    schedule 20.11.2017
comment
Прежде чем жаловаться, проверьте, что File.createTempFiles возвращает. А для второй части, исходя из того, как вы общаетесь с пользователем... так как я не знаю, я не могу помочь.   -  person AxelH    schedule 20.11.2017
comment
Привет, я отредактировал свой код, добавив: File temp = File.createTempFile(tempfile, .csv); BufferedWriter Writer = новый BufferedWriter (новый FileWriter (temp)); Но теперь файл tmp пуст. А еще я не знаю как ответить на запрос с содержимым файла   -  person Gjord83    schedule 20.11.2017


Ответы (1)


Как создать BufferedWriter во временном файле с помощью Files.createTempFile

Path tempDir = Files.createTempFile("Products", "sample.csv");
BufferedWriter writer = Files.newBufferedWriter(tempDir, StandardOpenOption.DELETE_ON_CLOSE);

Вот быстрый пример:

public static void main(String[] args) throws Exception {
    Path p = Files.createTempFile("Test", ".tmp");
    try(
            BufferedWriter writer = Files.newBufferedWriter(p, StandardOpenOption.DELETE_ON_CLOSE)
            ){
        System.out.println(p);
        for(int i = 0; i < 26; ++i){
            writer.append((char)(i+'a'));
        }

    }
}

Создание "c:\Temp\Test#########.tmp", содержащего:

 abcdefghijklmnopqrstuvwxyz

Для второй части недостаточно информации.

person AxelH    schedule 20.11.2017
comment
Я изменил свой код и теперь делаю: File temp = File.createTempFile(tempfile, .csv); BufferedWriter Writer = новый BufferedWriter (новый FileWriter (temp)); но файл tmp пустой - person Gjord83; 20.11.2017
comment
@ Gjord83 Gjord83 Я не могу отлаживать ваш код, все, что я могу сказать, это то, что приведенный здесь код является рабочим решением. Я добавил возможность удалить файл при вызове метода close (так что будьте осторожны с тем, что вы хотите с этим сделать). - person AxelH; 20.11.2017
comment
Спасибо, а как скачать этот созданный файл? Я имею в виду, я хочу, чтобы пользователь автоматически загружал файл - person Gjord83; 20.11.2017
comment
@ Gjord83 Gjord83 Вы продолжаете спрашивать, но я до сих пор понятия не имею, как ваши пользователи общаются с помощью этого метода ... - person AxelH; 20.11.2017
comment
Я использую vaadin 8, и есть кнопка для управления экспортом продуктов. Когда он нажимает кнопку, есть метод, который записывает csv. Когда CSV написан, я бы открыл диалоговое окно, в котором предлагается открыть или сохранить - person Gjord83; 20.11.2017
comment
@Gjord83 Gjord83 В первый раз, когда вы упоминаете Ваадина ... Я не могу помочь, но проверьте taht ссылка или что-то подобное - person AxelH; 20.11.2017
comment
Да, я впервые упомянул Ваадин, потому что не думаю, что он напрямую связан с Ваадином. У меня есть файл в каталоге tmp, и я хочу разрешить пользователю загружать файл в конце создания файла csv. Во всяком случае, вы были очень добры! Спасибо за все - person Gjord83; 20.11.2017