JDK7 представляет новый класс операции файла java.nio.file.file, который содержит много полезных методов для манипулирования файлами, такими как проверка файла скрытым файлом или проверка файла файлом только для чтения. Разработчики также могут использовать метод Files.readallbytes (path) для чтения всего файла в память. Этот метод гарантирует, что когда все содержимое байта прочитано, атрибуты файла закрыты, в противном случае возникнут исключение IO или другие неконтролируемые исключения. Это означает, что после прочтения файла до последнего контента блока нет необходимости закрывать файл.
Обратите внимание, что этот метод не подходит для чтения больших файлов, потому что может быть недостаточное пространство памяти. Разработчики также должны указать кодирование символов файла, чтобы избежать любых исключений или ошибок анализа.
Если вы хотите прочитать файл в качестве строки, вы также можете использовать метод readalllines (path Path, charset cs), который аналогичен предыдущему методу, и нет необходимости закрывать файл после прочтения файла. Но он возвращает не массив байтов, а множество струн. Более того, Java8 переопределяет этот метод, без указания набора символов, непосредственно с использованием кодирования UTF-8 для преобразования строк.
Если вы хотите прочитать файл в виде строки строки по строке, вы можете использовать метод файлов. Используя метод Foreach (), вы можете использовать только одну строку кода Java для вывода всех содержимого файла в консоли, например, третий фрагмент кода ниже.
Кода -копия выглядит следующим образом:
импортировать java.io.ioexception;
импортировать java.nio.charset.standardcharsets;
Импорт java.nio.file.files;
Импорт java.nio.file.paths;
импортировать java.util.list;
открытый класс FileReadingTest {
public static void main (string [] args) бросает ioException {
// java 7 примеров
// files.readallbytes считывает файл в UTF-8, по умолчанию.
System.out.println (new String (files.readallbytes (paths.get ("d: //jd.txt"))));
// 8 примеров Java
List <string> line = files.readalllines (paths.get ("d: //jd.txt"), standardcharsets.utf_8);
StringBuilder SB = new StringBuilder ();
для (строка строки: lines) {
SB.Append (Line);
}
String fromfile = sb.toString ();
System.out.println (FromFile);
}
}
Если вы не используете JDK7, но JDK8, то одна строка кода может завершить чтение файла.
Кода -копия выглядит следующим образом:
Импорт статический java.lang.system.out;
Импорт static java.nio.file.files.readallbytes;
Импорт статический java.nio.file.paths.get;
импортировать java.io.ioexception;
открытый класс FileIntoString {
public static void main (string [] args) бросает ioException {
// Одна строка кода может использоваться для чтения файла, по умолчанию-кодирование UTF-8
out.println (new String (recareallbytes (get ("d: /jd.txt"))));
}
}
Если вы используете JDK8, вы также можете использовать потоковой API для чтения и записи файлов, чтобы код был более кратким и эффективным.
В следующем примере метод line () возвращает струнный поток, а строка использует кодирование UTF-8. следующее:
Кода -копия выглядит следующим образом:
импортировать java.io.ioexception;
импортировать java.nio.charset.standardcharsets;
Импорт java.nio.file.files;
Импорт java.nio.file.paths;
открытый класс java8filereader {
public static void main (string [] args) бросает ioException {
// Java 8 использует потоковую передачу для чтения файлов, что более эффективно
Files.lines (paths.get ("d: //jd.txt"), standardcharsets.utf_8) .foreach (system.out :: println);
}
}
Несколько пунктов, чтобы отметить в приведенном выше примере:
1) Файл может быть большим и может превышать пространство памяти.
2) Чтобы вывести журнал, запишите, почему файл не может быть прочитал или любые ошибки, которые возникают при чтении файла.
3) При преобразовании байтов в символы следует указать кодирование символов.
4) справиться с ситуацией, когда файла не существует.
Также обратите внимание, что если код файла чтения является кодированием ANSI, приведенный выше пример будет сообщать о java.nio.charset.malformedInputexception: input Length = 1 при чтении содержимого файла.