もっと 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   櫻庭 祐一
Upcoming SlideShare
Loading in...5
×

もっと New I/O。

6,716

Published on

Published in: Technology, Education
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,716
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
22
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

もっと 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 櫻庭 祐一
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×