Файл io в Java7 претерпел большие изменения, и было представлено много новых классов специально:
Импорт java.nio.file.directorystream; import java.nio.file.filesystem; импорт java.nio.file.filesystems; импорт java.nio.file.files; импорт java.nio.file.path; импорт java.nio.file.paths; импорт. java.nio.file.attribute.posixFilePermissions;
...... подождите, чтобы заменить исходный метод работы ввода -вывода файла на основе java.io.file.
1. Путь заменяет файл
Путь представляет собой путь, который является иерархическим и состоит из последовательности элементов каталога и имени файла, разделенных специальным разделителем или разделителем.
Путь используется для представления путей и файлов файлов. Есть несколько способов построить объект пути для представления пути файла или файла:
1) Во -первых, существуют два статических метода окончательных путей класса. Как построить объект пути из строки пути:
Path Path = paths.get ("c:/", "xmp"); Путь PATH2 = paths.get ("c:/xmp"); Uri u = uri.create ("file: /// c:/xmp/dd"); Path p = paths.get (u);2) Строительство файловых систем:
Path Path3 = fileystems.getDefault (). GetPath ("c:/", "access.log");3) преобразование между файлом и путем, преобразование между файлом и URI:
File file = new File ("c: /my.ini"); path p1 = file.topath (); p1.tofile (); file.touri ();4) Создайте файл:
PATH TARGET2 = PATHS.get ("c: //mystuff.txt"); // set <sosixfilepermission> perms = posixFilePermissions.fromString ("rw-rw-rw-"); // fileattribut if (! files.exists (target2)) files.createfile (target2);} catch (ioexception e) {e.printstacktrace ();}PosixFilePermission не поддерживается в Windows для указания разрешений RWX.
5) files.newbufferedReader считывает файл:
try {// charset.forname ("gbk") BufferedReader Reader = files.newbufferedReader (paths.get ("c: //my.ini"), standardcharsets.utf_8); String str = null; while ((str = reader.readline ())! = null) {System.out.println (str); }} catch (ioException e) {e.printstacktrace (); }Вы можете видеть, что использование файлов. NewbufferedReader намного проще, чем исходный файл fileInputStream, а затем пакет BufferedReader.
Здесь, если указанное кодирование символов неверно, может быть брошено исключение, или можно прочитать искаженный код:
java.nio.charset.malformedInputexception: входной длину = 1 на java.nio.charset.coderresult.trowexception (coderresult.java:281) на sun.nio.cs.streamdecoder.implread (streamdecoder.java:339) у sun.nio.cs.streamdecoder.read (Streamdecoder.java:178) на java.io.inputstreamreader.read (inputStreamReader.java:184) на java.io.bufferedread.fill (BufferedReader.java:161) на Java.io.io.buffredread.Reader.Rearder.Reader.Rearder.Reader.Reader. на java.io.bufferedreader.readline (BufferedReader.java:389) на com.coin.test.main (test.java:79)
6) Операция по написанию файлов:
try {bufferewriter writer = files.newbufferedwriter (paths.get ("c: //my2.ini"), standardcharsets.utf_8); writer.write ("Операция записи файла тестового файла"); writer.flush (); writer.close ();} catch (ioexception e1) {e1.printstacktrace ();}7) Переезд папки:
Path dir = paths.get ("d: // webworkspace"); try (DirectoryStream <Thate> stream = files.newDirectoryStream (dir)) {for (path e: Stream) {System.out.println (e.getFilename ()); }} catch (ioException e) {} try (stream <thate> stream = files.list (paths.get ("c:/"))) {итератор <path> item = stream.iterator (); while (ite.hasnext ()) {path pp = item.next (); System.out.println (pp.getFilename ()); }} catch (ioException e) {e.printstacktrace (); }Вышеуказанное пересекает единый каталог, он не пересекает весь каталог. Вам нужно использовать: files.walkfileTree
8) Пройдите весь файл каталог:
public static void main (string [] args) бросает ioException {path startDir = paths.get ("c: //apache-tomcat-8.0.21"); Список <Thape> result = new LinkedList <Thate> (); Files.walkfileTree (startdir, new findjavavisitor (результат)); System.out.println ("result.size () =" + result.size ()); } Частный статический класс FindJaviSitor расширяет SimpleFileVisitor <Thap> {Private List <Thap> result; public findJavavisitor (список <Thout> result) {this.Result = result; } @Override public fileVisitResult visitFile (PATH File, BasicFileatTributes attrs) {if (file.toString (). Endswith (". Java")) {result.add (file.getFilename ()); } return filevisitresult.continue; }}Давайте приведем практическое пример:
public static void main (string [] args) бросает ioException {path startDir = paths.get ("f: // upload // images"); // f: // upload // Images // 2 // 20141206 List <Thate> result = new LinkedList <Thap> (); Files.walkfileTree (startdir, new findjavavisitor (результат)); System.out.println ("result.size () =" + result.size ()); System.out.println ("Dode."); } Частный статический класс FindJaviSitor расширяет SimpleFileVisitor <Thap> {Private List <Thap> result; public findJavavisitor (список <Thout> result) {this.Result = result; } @Override publicVisitResult vitiveFile (PATH File, BasicFileatTributes attrs) {string filePath = file.tofile (). GetabsolutePath (); if (filepath.matches (".*_ [1 | 2] {1} //. (? } catch (ioException e) {e.printstackTrace (); } result.add (file.getFilename ()); } return filevisitresult.continue; }}Удалить все квалифицированные изображения в каталоге: filepath.matches (".*_ [1 | 2] {1} //. (? I) (JPG | JPEG | GIF | BMP | PNG)")
public static void main (string [] args) бросает ioException {path startDir = paths.get ("f: // 111111 // upload // изображения"); // f:/111111 // upload // Images // 2 // 20141206 List <Thate> result = new LinkedList <Thate> (); Files.walkfileTree (startdir, new findjavavisitor (результат)); System.out.println ("result.size () =" + result.size ()); System.out.println ("Dode."); } Частный статический класс FindJaviSitor расширяет SimpleFileVisitor <Thap> {Private List <Thap> result; public findJavavisitor (список <Thout> result) {this.Result = result; } @Override publicVisitResult vitiveFile (PATH File, BasicFileatTributes attrs) {string filePath = file.tofile (). GetabsolutePath (); int width = 224; int height = 300; Stringutils.substringbeforelast (filepath, "."); String newpath = stringutils.substringbeforelast (filepath, ".") + "_1." + Stringutils.substringafterlast (filepath, "."); try {imageutil.zoomimage (filepath, newpath, ширина, высота); } catch (ioException e) {e.printstackTrace (); return filevisitresult.continue; } result.add (file.getFilename ()); return filevisitresult.continue; }}Генерирует миниатюр указанного размера для всех изображений в каталоге. A.JPG генерирует a_1.jpg
2. Мощный java.nio.file.files
1) Создать каталоги и файлы:
try {files.createdirectories (paths.get ("c: // test")); if (! files.exists (paths.get ("c: // test"))) files.createfile (paths.get ("c: //test/test.txt")); // files.createdirectories (paths.get ("c: //test/test2.txt"));} catchception e) {e.printstack ();} catchception e) {e.printStacktrace;Обратите внимание, что каталог создания и файлы файлов. CreateDirectories и Files.createfile не могут быть смешаны. У вас должен быть каталог, прежде чем вы сможете создавать файлы в каталоге.
2) Копия файла:
Скопировать из файла в файл: files.copy (источник пути, путь пути, параметры копирования);
Скопировать из потока ввода в файл: files.copy (inputstream in, path Target, параметры копирования);
Скопировать из файла в выходной сигнал: files.copy (Path Source, OutputStream Out);
try {files.createdirectories (paths.get ("c: // test")); if (! files.exists (paths.get ("c: // test"))) файлы. Files.copy (paths.get ("c: //my.ini"), system.out); Files.copy (paths.get ("c: //my.ini"), paths.get ("c: //my2.ini"), standarcopyoption.replace_existing); Files.copy (system.in, paths.get ("c: //my3.ini"), standarcopyoption.replace_existing);} catch (ioexception e) {e.printstacktrace ();}3) Итерация через каталог и папку. Он был введен выше: files.newdirectorystream, files.walkfileTree
4) Прочтите свойства файла:
Path zip = paths.get (uri); System.out.println (files.getLastmodifiedTime (ZIP)); System.out.println (files.size (Zip)); System.out.println (files.issymboliclink (zip)); System.out.println (files.isdirectory (zip)); System.out.println (files.readattributes (Zip, "*"));
5) Читать и установить разрешения на файл:
PATH Profile = paths.get ("/home/digdeep/.profile"); PosixFileatTributes attrs = files.readattributes (profile, posixFileAttributes.class); // разрешение на чтение файлов набор <posixFilePermissions> posixPermissions = attrs.permissions (); posixpermissions.clear (); String antuctor = attrs.owner (). GetName (); String perms = posixFilePermissions.toString (posixPermissions); System.out.format («%s%s%n», владелец, perms); posixpermissions.add (posixFilePermission.owner_read); posixpermissions.add (posixFilePermission.Group_Read); posixpermissions.add (posixFilePermission.athers_read); posixpermissions.add (posixFilePermission.owner_write); Files.setPosixFilePermissions (профиль, posixpermissions); // Установить разрешения файлаКласс файлов просто мощный, и почти все связанные свойства файлов и каталогов имеют желаемый API для поддержки. Я слишком ленив, чтобы продолжать представлять его здесь, пожалуйста, обратитесь к документации JDK8 для деталей.
Практический пример:
Импорт java.io.bufferedReader; import java.io.bufferedwriter; import java.nio.charset.standardcharsets; import java.nio.file.files; import java.nio.file.path; import java.nio.file.paths; reader = files.newbuffered reader (paths.get ("c: //members.sql"), standardcharsets.utf_8); BufferedWriter writer = files.newbufferedwriter (paths.get ("c: //members3.txt"), standardcharsets.utf_8); String str = null; while ((str = reader.readline ())! = null) {if (str! = null && str.indexof (", cast (0x")! = -1 && str.indexof ("as dateTime)")! = -1) {String newstr = str.substring (0, str.indexof (", CAST (0x") + ")"; writer.write (Newstr); writer.newline (); }} writer.flush (); writer.close (); } catch (Exception e) {e.printstackTrace (); }}}Сценарий заключается в том, что когда SQL Server экспортирует данные, DataTime будет экспортирован в шестнадцатеричный двоичный формат, такой как: CAST (0x0000A2A500FC2E4F как DateTime))))
Таким образом, вышеуказанная программа экспортирует последнее поле DataTime, удаляет литой (0x0000A2A500FC2E4F как DateTime), чтобы генерировать новый сценарий SQL, который не содержит значения поля DateTime. Используется для импорта в MySQL.
На полпути, на самом деле есть лучший способ. Использование SQL YOG может гибко импортировать таблицы и данные в SQL Server в MySQL. Использование функции экспорта данных с SQL Server трудно справиться.
Приведенное выше использование (подробное объяснение), основанное на классе Java Files и Paths Class, является всем контентом, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.