Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
もっと New I/O。   Java in the Box   櫻庭 祐一
JSR 51 New I/O APIsBuffer/Direct Buffer Channelノンブロッキング I/O   Charset 積み残しあり!                       Mark Reinhold
JSR 51 New I/O APIs  An API for scalable I/O operations   Buffer/Directsockets, in the form of  on both files and Buffer  ...
JSR 203 More New I/O APIs  非同期 I/O ファイルシステムインタフェース  SocketChannel     のマルチキャスト                       Alan Bateman当初 J2SE5....
なぜファイルシステム ? メタデータ          シンボリックリンクファイルの監視
なぜファイルシステム ?               テ ム               シ ス           イ ル       フ ァ     な ら     い メタデータ   し       ー ス 新       ェ      ...
<<factory>>                      FileSystemFileSystems                                         <<interface>>   Files      ...
生成FileSystem fileSystem = FileSystems.getDefault();// file.txt の生成Path path1 = fileSystem.getPath("file.txt", null);// foo...
生成File file = ...;// File から PathPath path = file.toPath();// Path から FileFile file2 = path.toFile();
生成// シンボリックリンクのターゲットFile fileFileSystem=fileSystem = FileSystems.getDefault();            ...;Path target = fileSystem.get...
操作 : Files クラス// ファイルのコピーString source = ...;Path source = fileSystem.getPath(source);String destination = ...;Path destin...
操作 : Files クラスPath source = ...; Path dest = ...;// 移動Files.move(source, dest);// 削除Files.delete(dest);Files.deleteIfExist...
操作 : Files クラスPath path = ...;// ストリームなどの取得BufferedReader reader = Files.newBufferedReader(path,                          ...
操作 : Files クラスPath source = ...;// ファイルのコピーPath dest = ...;     path = ...;// ストリームなどの取得String source = ...;   簡易入出力byte[]...
メタデータPath path = ...;// 直接取得FileTime creationTime    = (FileTime)Files.getAttribute(path, "creationTime");// AttributeView...
メタデータPath path = ...;// 直接取得FileTime creationTime    = (FileTime)Files.getAttribute(path, "creationTime");// AttributeView...
ファイルビジター                     Vistor パターンを使用して                             ファイルツリーを探索Path startDir = ...;Files.walkFileTree...
ファイルの監視                           WatchServicePath dir = fileSystem.getPath(...);WatchService service = fileSystem.newWatc...
非同期 I/OSelector           AsynchronousChannel             Future              CompletionHandlerマルチキャスト      DatagramChannel
JSR 51 の積み残し 非同期 I/Oファイルシステムインタフェース  マルチキャスト       JSR 203 More New I/Oファイルシステムインタフェース    メタデータ      ファイルビジター        ファイルの監視
もっと New I/O。   Java in the Box   櫻庭 祐一
Nächste SlideShare
Wird geladen in …5
×

もっと New I/O。

7.287 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie, Bildung
  • Als Erste(r) kommentieren

もっと New I/O。

  1. 1. もっと New I/O。 Java in the Box 櫻庭 祐一
  2. 2. JSR 51 New I/O APIsBuffer/Direct Buffer Channelノンブロッキング I/O Charset 積み残しあり! Mark Reinhold
  3. 3. JSR 51 New I/O APIs An API for scalable I/O operations Buffer/Directsockets, in the form of on both files and Buffer either asynchronous requests Channel or pollingAノンブロッキングinterface that supports bulk access new filesystem I/Oto file attributes (including MIME content types),escape Charset to filesystem-specific APIs,and a service-provider interface for pluggable filesystem 積み残しあり!implementations. Mark Reinhold
  4. 4. JSR 203 More New I/O APIs 非同期 I/O ファイルシステムインタフェース SocketChannel のマルチキャスト Alan Bateman当初 J2SE5.0 向け
  5. 5. なぜファイルシステム ? メタデータ シンボリックリンクファイルの監視
  6. 6. なぜファイルシステム ? テ ム シ ス イ ル フ ァ な ら い メタデータ し ー ス 新 ェ フ シンボリックリンク ン タ !! イ 解 決 べ てファイルの監視 す
  7. 7. <<factory>> FileSystemFileSystems <<interface>> Files Path AttributeView <<interface>> <<interface>> FileVisitor WatchService
  8. 8. 生成FileSystem fileSystem = FileSystems.getDefault();// file.txt の生成Path path1 = fileSystem.getPath("file.txt", null);// foo/bar/file.txt の生成Path path2 = fileSystem.getPath("foo", "bar", "file.txt");
  9. 9. 生成File file = ...;// File から PathPath path = file.toPath();// Path から FileFile file2 = path.toFile();
  10. 10. 生成// シンボリックリンクのターゲットFile fileFileSystem=fileSystem = FileSystems.getDefault(); ...;Path target = fileSystem.getPath("realfile.txt");// file.txt の生成 シンボリックリンクするファイル File から PathPath path1==file.toPath(); link path fileSystem.getPath("link.txt"); null); fileSystem.getPath("file.txt",// foo/bar/file.txt の生成 シンボリックリンクの作成 Path から FileFiles.createSymbolicLink(link, target);File file2Path path2 = fileSystem.getPath("foo", "bar", "file.txt"); path.toFile();
  11. 11. 操作 : Files クラス// ファイルのコピーString source = ...;Path source = fileSystem.getPath(source);String destination = ...;Path destination = fileSystem.getPath(destination);Files.copy(source, destination);
  12. 12. 操作 : Files クラスPath source = ...; Path dest = ...;// 移動Files.move(source, dest);// 削除Files.delete(dest);Files.deleteIfExists(dest);
  13. 13. 操作 : Files クラスPath path = ...;// ストリームなどの取得BufferedReader reader = Files.newBufferedReader(path, Charset.defaultCharset());BufferedWriter writer = Files.newBufferedWriter(path, Charset.defaultCharset());InputStream iStream = Files.newInputStream(path);OutputStream oStream = Files.newOutputStream(path);ByteChannel channel = Files.newByteChannel(path);
  14. 14. 操作 : Files クラスPath source = ...;// ファイルのコピーPath dest = ...; path = ...;// ストリームなどの取得String source = ...; 簡易入出力byte[]BufferedReader reader = Files.newBufferedReader(path,// 移動bytesPath source ==fileSystem.getPath(source); Files.readAllBytes(path);List<String> lines = Files.readAllLines(path,Files.move(source, dest); Charset.defaultCharset());BufferedWriter writer = Files.newBufferedWriter(path,String destination = ...; Charset.defaultCharset());// 削除Path destination = fileSystem.getPath(destination); Charset.defaultCharset());Files.write(path, bytes);InputStream iStreamFiles.delete(dest); = Files.newInputStream(path);Files.write(path, destination);OutputStream oStream = Files.newOutputStream(path);Files.deleteIfExists(dest);Files.copy(source,lines, Charset.defaultCharset());ByteChannel channel = Files.newByteChannel(path);
  15. 15. メタデータPath path = ...;// 直接取得FileTime creationTime = (FileTime)Files.getAttribute(path, "creationTime");// AttributeView を介して取得BasicFileAttributeView view = Files.getFileAttributeView(path, BasicFileAttributeView.class);BasicFileAttributes attributes = view.readAttributes();FileTime lastAccessTime = attributes.lastAccessTime();
  16. 16. メタデータPath path = ...;// 直接取得FileTime creationTime = (FileTime)Files.getAttribute(path, "creationTime");// AttributeView を介して取得BasicFileAttributeView view = Files.getFileAttributeView(path, BasicFileAttributeView.class);BasicFileAttributes attributes = view.readAttributes();FileTime lastAccessTime = attributes.lastAccessTime();
  17. 17. ファイルビジター Vistor パターンを使用して ファイルツリーを探索Path startDir = ...;Files.walkFileTree(path, new SimpleFileVisitor<Path>() { public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { System.out.println("Visit File: " + file); return FileVisitResult.CONTINUE; } public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { System.out.println("Visit Directory: " + dir); return FileVisitResult.CONTINUE; }});
  18. 18. ファイルの監視 WatchServicePath dir = fileSystem.getPath(...);WatchService service = fileSystem.newWatchService();dir.register(service, StandardWatchEventKind.ENTRY_MODIFY);for (;;) { WatchKey key = service.take(); for (WatchEvent<?> event : key.pollEvents()) { System.out.println(event.kind() + " " + event.context()); } key.reset();}
  19. 19. 非同期 I/OSelector AsynchronousChannel Future CompletionHandlerマルチキャスト DatagramChannel
  20. 20. JSR 51 の積み残し 非同期 I/Oファイルシステムインタフェース マルチキャスト JSR 203 More New I/Oファイルシステムインタフェース メタデータ ファイルビジター ファイルの監視
  21. 21. もっと New I/O。 Java in the Box 櫻庭 祐一

×