Можно ли сохранить файл в любую коллекцию, например хэш-карту или хеш-таблицу? - PullRequest
0 голосов
/ 08 мая 2020

Я просто хотел сохранить файл в хэш-карту или хеш-таблицу или в коллекцию любого типа. Например, HashMap = {"fileName": "File Content"} Но я не нашел способов сделать это.

Может кто-нибудь мне помочь?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Предположим, что все ваши jsоны хранятся в папке src/main/resources, тогда вы можете сделать это так.

1. Сначала напишите метод для чтения файла json следующим образом:

public String readJson(String fileName) throws IOException {
        final StringBuilder responseData = new StringBuilder();
        InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName);
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String line = null;
        while ((line = bufferedReader.readLine()) != null) {
            responseData.append(line);
        }
        return responseData.toString();
    }

2. Теперь создайте HashMap<String,String> и вызовите указанный выше метод для каждого файла

public void storeFileDataAsMap() {
    Map<String, String> fileMap = new HashMap<>(); 
        try (Stream<Path> paths = Files.walk(Paths.get("src/main/resources"))) {
            paths
                .filter(Files::isRegularFile)
                .forEach(eachFile->{
                    try {
                        String fileName = eachFile.toAbsolutePath().toString();
                        fileMap.put(eachFile.getFileName().toString(), readJson(fileName));
                    } catch (IOException e) {
                        throw new RuntimeException("File not found exception");
                    }
                });
        } catch (IOException e) {
            throw new RuntimeException("File not found exception");
        }
    }
0 голосов
/ 08 мая 2020

можно попробовать HashMap<String,String>. Будет более эффективно хранить местоположения файлов в виде значений вместо хранения всего файла в хэш-карте.

...