- Создайте
- Удалить
- копия
- Переместить / Переименовать
СОВЕТ Краткая заметка о Path . В этом посте предполагается, что вы немного знакомы с новым классом Java 7 Path , если нет, то это краткое введение! Путь — это логическая абстракция местоположения в файловой системе, например, « c: \» — это Путь как «../foobar.txt».
Давайте начнем с рассмотрения создания и удаления файлов.
Создание и удаление файлов
Используя простые вспомогательные методы в классе Files, вы можете создавать и легко удалять файлы.
СОВЕТ Если вы используете фрагменты кода в этом разделе, замените фактические пути на те, которые соответствуют вашей файловой системе!
В следующем фрагменте кода показано базовое создание файла с использованием метода Files.createFile (Path target) .
1
2
|
Path target = Paths.get( "D:\\Backup\\MyStuff.txt" ); Path file = Files.createFile(target); |
Чаще всего вы хотите указать некоторые атрибуты файла в этом файле в целях безопасности, а также узнать, создается ли файл для чтения, / или записи, и / или выполнения. Поскольку это зависит от файловой системы, вам необходимо использовать класс разрешений для файлов, специфичный для файловой системы, и его помощник.
Например, PosixFilePermission и PosixFilePermissions для POSIX-совместимой файловой системы. Ниже приведен пример настройки чтения / записи для владельца-группы-все в файловой системе POSIX.
1
2
3
4
5
6
|
Path target = Paths.get( "D:\\Backup\\MyStuff.txt" ); Set<PosixFilePermission> perms = PosixFilePermissions.fromString( "rw-rw-rw-" ); FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms); Files.createFile(target, attr); |
Пакет java.nio.file.attribute содержит список предоставляемых классов FilePermission . Поддержка атрибутов файлов также более подробно рассматривается в главе 2 The Well-Gounded Java Developer .
ПРЕДУПРЕЖДЕНИЕ. При создании файлов с определенными разрешениями следует помнить о любых ограничениях umask или ограничениях, которые применяются родительским каталогом этого файла. Например, вы можете обнаружить, что, хотя вы указываете rw-rw-rw для своего нового файла, он фактически создается как rw-r – r– из-за этих ограничений.
Удаление файла немного проще и выполняется простым методом Files.delete (Path) .
1
2
|
Path target = Paths.get( "D:\\Backup\\MyStuff.txt" ); Files.delete(target); |
Далее краткий обзор по копированию и перемещению файлов в файловой системе.
Копирование и перемещение файлов
Используя простые вспомогательные методы в классе Files, вы можете легко выполнять операции копирования и перемещения. В следующем фрагменте кода демонстрируется базовая копия с использованием метода Files.copy (Path source, Path target) .
1
2
3
|
Path source = Paths.get( "C:\\My Documents\\Stuff.txt" ); Path target = Paths.get( "D:\\Backup\\MyStuff.txt" ); Files.copy(source, target); |
Чаще всего вы хотите указать некоторые параметры с операцией копирования. В Java 7 вы можете использовать перечисление StandardCopyOption для указания этих опций. В следующем примере используется опция перезаписи (то есть замены существующей).
1
2
3
4
5
|
import static java.nio.file.StandardCopyOption.*; Path source = Paths.get( "C:\\My Documents\\Stuff.txt" ); Path target = Paths.get( "D:\\Backup\\MyStuff.txt" ); Files.copy(source, target, REPLACE_EXISTING); |
Другие параметры копирования включают COPY_ATTRIBUTES (копирует атрибуты файла) и ATOMIC_MOVE (обеспечивает успешное выполнение обеих сторон операции перемещения или откат операции). Операция перемещения очень похожа на операцию копирования и выполняется с использованием атомарных файлов. Метод перемещения (источник пути, цель пути) .
Опять же, вы обычно хотите, чтобы некоторые параметры копирования сопровождали это перемещение, поэтому вы можете использовать метод Files.move (путь к источнику, цель пути, параметры копирования …) (обратите внимание на использование varargs ).
В этом случае мы хотим сохранить атрибуты исходного файла при его перемещении, а также перезаписать целевой файл (если он существует).
1
2
3
4
5
|
import static java.nio.file.StandardCopyOption.*; Path source = Paths.get( "C:\\My Documents\\Stuff.txt" ); Path target = Paths.get( "D:\\Backup\\MyStuff.txt" ); Files.move(source, target, REPLACE_EXISTING, COPY_ATTRIBUTES); |
Как видите, новый NIO.2 API для манипулирования файлами прост в использовании, мы надеемся, что вам понравился этот маленький дегустатор!
Удачного кодирования! Не забудь поделиться!
Рекомендации :
- Управление файлами в Java 7 от наших партнеров по JCG в Java 7 Developer Blog
- Обоснованный Java-разработчик
Статьи по Теме: