Страницы

Поиск по вопросам

четверг, 19 декабря 2019 г.

Какие классы лучше использовать для чтения и записи файлов?

#java #файлы


Для чтения из файл (строк):

DataInputStream data = new DataInputStream(new BufferedInputStream(new FileInputStream(fileDir)));


Для записи в файл:

FileWriter fw = new FileWriter(fileName);


Так какие классы лучше использовать для чтения и записи файлов?
    


Ответы

Ответ 1



Класс File и BufferedReader/Writer Вот запись: try { String content = str; File file = new File(pathToFile); if (!file.exists()) { file.createNewFile(); } FileWriter fw = new FileWriter(file.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw); bw.write(content); bw.close(); System.out.println("The information writed:" + content); } catch (IOException e) { e.printStackTrace(); } } Вот чтение: BufferedReader br = null; String s = null; try { String sCurrentLine; br = new BufferedReader(new FileReader(pathToFile)); while ((sCurrentLine = br.readLine()) != null) { System.out.println("old ID" + sCurrentLine); s = sCurrentLine; } } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) br.close(); } catch (IOException ex) { ex.printStackTrace(); } }

Ответ 2



Низкоуровневые классы для чтения и записи файлов в текстовом виде лучше не использовать. Использование commons-io Чтение строк из файла File file = new File("c:/project.properties"); List lines = FileUtils.readLines(file, "UTF-8"); Прочитать весь файл в одну строку String content = FileUtils.readFileToString(file, "UTF-8"); Запись строк в файл FileUtils.writeLines(file, "UTF-8", lines); Запись строки в файл FileUtils.writeStringToFile(file, "string to write", "UTF-8"); Использование guava Чтение строк из файла List lines = Files.readLines(file, Charsets.UTF_8); ImmutableList lines = Files.asCharSource(file, Charsets.UTF_8) .readLines(); Прочитать весь файл в одну строку String content = Files.toString(file, Charsets.UTF_8); Запись строк в файл Files.asCharSink(file, Charsets.UTF_8).writeLines(lines); Запись строки в файл Files.write("string to write", file, Charsets.UTF_8); Использование JDK 7 и выше Чтение строк из файла Path path = Paths.get("c:/project.properties"); List lines = Files.readAllLines(path, StandardCharsets.UTF_8); Прочитать весь файл в одну строку String content = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); Запись строк в файл Files.write(path, lines, StandardCharsets.UTF_8); Запись строки в файл String content = "string to write"; Files.write(path, content.getBytes(StandardCharsets.UTF_8)); Работа с текстовым файлом сложной структуры Если у Вас в текством файл хранятся данные с разделителями — так называемый CSV формат opencsv Apache Commons CSV Например, csv-файл с таблицей 3x3 с элементами разделенными ; 1;2;3 4;5;6 7;8;9 Чтение файла с помощью opencsv CSVReader reader = new CSVReader( new FileReader("c:/project.properties"), ';', '"'); // Read all rows at once List allRows = reader.readAll(); FileReader не позволяет кодировку указывать, поэтому желательно использовать другой потоковый класс с указанием кодировки.

Комментариев нет:

Отправить комментарий