Java7新特性(二)IO
来源:互联网 发布:c语言!= 编辑:程序博客网 时间:2024/06/10 08:45
附上:java 7 TWR
5.try-with-resources(TWR) AutoCloseable
package com.java7developer.chapter1;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.MalformedURLException;import java.net.URL;public class Java7ResourcesExample { private void run() throws IOException { File file = new File("foo"); URL url = null; try { url = new URL("http://www.google.com/"); } catch (MalformedURLException e) { } try (OutputStream out = new FileOutputStream(file); InputStream is = url.openStream()) { byte[] buf = new byte[4096]; int len; while ((len = is.read(buf)) > 0) { out.write(buf, 0, len); } } } public static void main(String[] args) throws IOException { Java7ResourcesExample instance = new Java7ResourcesExample(); instance.run(); }}
本文主要根据《Java程序员修炼之道》整理的代码笔记片段
1.Path
- //查找目录下 文件
- Path dir = Paths.get("E:\\Learn\\Java7\\trunk");
- try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir,
- "*.properties")) {
- for (Path entry : stream) {
- System.out.println(entry.getFileName());
- }
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- Path listing = Paths.get("/usr/bin/zip");
- System.out.println("File Name [" + listing.getFileName() + "]");
- System.out.println("Number of Name Elements in the Path ["
- + listing.getNameCount() + "]");
- System.out.println("Parent Path [" + listing.getParent() + "]");
- System.out.println("Root of Path [" + listing.getRoot() + "]");
- System.out.println("Subpath from Root, 2 elements deep ["
- + listing.subpath(0, 2) + "]");
2.Files.walkFileTree 遍历目录
- public static void main(String[] args) throws IOException {
- ath startingDir = Paths.get("E:\\Learn\\Java7\\trunk");
- //遍历目录
- Files.walkFileTree(startingDir, new FindJavaVisitor());
- }
- private static class FindJavaVisitor extends SimpleFileVisitor<Path> {
- @Override
- public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
- if (file.toString().endsWith(".java")) {
- System.out.println(file.getFileName());
- }
- return FileVisitResult.CONTINUE;
- }
- }
3.Files
- try {
- Path zip = Paths.get("E:\\java\\test");
- //Path zip = Paths.get("E:\\java\\测试.rar");
- System.out.println(zip.toAbsolutePath().toString());
- 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, "*"));
- } catch (IOException ex) {
- System.out.println("Exception" + ex.getMessage());
- }
- try {
- if(Files.exists(old)){
- Files.copy(old, target, StandardCopyOption.REPLACE_EXISTING);
- Files.move(old, target2,StandardCopyOption.REPLACE_EXISTING);
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- Path target = Paths.get("E:\\java\\test1.txt");
- // try {
- // Files.delete(target);
- // } catch (IOException e1) {
- // // TODO Auto-generated catch block
- // e1.printStackTrace();
- // }
- Set<PosixFilePermission> perms =
- PosixFilePermissions.fromString("rw-rw-rw-");
- //FileAttribute<Set<PosixFilePermission>> attr =
- PosixFilePermissions.asFileAttribute(perms);
- try {
- if(Files.notExists(target)){
- Files.createFile(target);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
4.读文件
- Path old = Paths.get("E:\\java\\test.txt");
- Path target = Paths.get("E:\\java\\test\\test1.txt");
- try (BufferedReader reader = Files.newBufferedReader(old, StandardCharsets.UTF_8)){
- String line ;
- while((line = reader.readLine())!=null){
- System.out.println(line);
- }
- } catch (IOException e) {
- }
- try(BufferedWriter writer =
- Files.newBufferedWriter(target, StandardCharsets.UTF_8, StandardOpenOption.WRITE)){
- writer.write("hello");
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- @SuppressWarnings("unused")
- List<String> lines = Files.readAllLines(old, StandardCharsets.UTF_8);
- @SuppressWarnings("unused")
- byte[] bytes = Files.readAllBytes(old);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
5.监听目录变化
- //监听目录变化
- try {
- WatchService watcher = FileSystems.getDefault().newWatchService();
- Path dir = FileSystems.getDefault().getPath("E:\\java");
- WatchKey key = dir.register(watcher, ENTRY_MODIFY);
- while (!shutdown) {
- key = watcher.take();
- for (WatchEvent<?> event : key.pollEvents()) {
- if (event.kind() == ENTRY_MODIFY) {
- System.out.println("Home dir changed!");
- }
- }
- key.reset();
- }
- } catch (IOException | InterruptedException e) {
- System.out.println(e.getMessage());
- }
6.FileChannel通道截取
- try {
- Path file = Paths.get("E:\\java\\test.txt");
- FileChannel channel = FileChannel.open(file);
- ByteBuffer buffer = ByteBuffer.allocate(1024);
- channel.read(buffer, channel.size() -13);
- tem.out.println((char)buffer.array()[0]);
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
7.AsynchronousFileChannel 异步通道读取
将来式
- public class Listing_2_8 {
- //将来式
- public static void main(String[] args) {
- try {
- Path file = Paths.get("E:\\java\\test.txt");
- AsynchronousFileChannel channel = AsynchronousFileChannel.open(file);
- ByteBuffer buffer = ByteBuffer.allocate(100_000);
- Future<Integer> result = channel.read(buffer, 0);
- while (!result.isDone()) {
- ProfitCalculator.calculateTax();
- }
- Integer bytesRead = result.get();
- System.out.println("Bytes read [" + bytesRead + "]");
- } catch (IOException | ExecutionException | InterruptedException e) {
- System.out.println(e.getMessage());
- }
- }
- private static class ProfitCalculator {
- @SuppressWarnings("unused")
- public ProfitCalculator() {
- }
- public static void calculateTax() {
- System.out.println("test");
- }
- }
- }
回调式
- public class Listing_2_9 {
- //回调式
- public static void main(String[] args) {
- try {
- Path file = Paths.get("E:\\java\\test.txt");
- AsynchronousFileChannel channel = AsynchronousFileChannel.open(file);
- ByteBuffer buffer = ByteBuffer.allocate(100_000);
- channel.read(buffer, 0, buffer,
- new CompletionHandler<Integer, ByteBuffer>() {
- public void completed(Integer result, ByteBuffer attachment) {
- //System.out.println("read");
- System.out.println("Bytes read [" + result + "]");
- }
- public void failed(Throwable exception, ByteBuffer attachment) {
- System.out.println(exception.getMessage());
- }
- });
- // System.out.println("test");
- Thread.sleep(1000);
- } catch (IOException | InterruptedException e) {
- System.out.println(e.getMessage());
- }
- }
- }
8.NetworkChannel 非阻塞网络套接字
- SelectorProvider provider = SelectorProvider.provider();
- try {
- NetworkChannel socketChannel = provider.openSocketChannel();
- SocketAddress address = new InetSocketAddress(3080);
- socketChannel = socketChannel.bind(address);
- Set<SocketOption<?>> socketOptions = socketChannel.supportedOptions();
- System.out.println(socketOptions.toString());
- socketChannel.setOption(StandardSocketOptions.IP_TOS, 3);
- //System.out.println(socketChannel.getOption(StandardSocketOptions.IP_TOS));
- Boolean keepAlive = socketChannel
- .getOption(StandardSocketOptions.SO_KEEPALIVE);
- // System.out.println(keepAlive);
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
其他:MulticastChannel Files.setPosixFilePermissions Files.readSymbolicLink Files.readAttributes(file, BasicFileAttributes.class);
0 0
- Java7新特性(二)IO
- Java7新特性(二)IO
- java7新特性IO操作Path
- java7新特性IO操作Files
- java7新特性(转载)
- Java7新特性(一)Coin
- Java7新特性(三)DI
- java7.的新特性!
- Java7新特性
- java7 新特性
- java7 新特性
- Java7新特性
- java7 新特性
- java7新特性(1)
- java7新特性
- JAVA7新特性
- Java7语法新特性
- java7 语法新特性
- 从Slice_Header学习H.264(三.1)--相关细节之 POC的计算
- Java并发库(八):java5原子性操作类的应用
- ViewPager刷新单个页面的方法, 回掉方法不能更新ViewPager方法
- 从Slice_Header学习H.264(三.2)--相关细节之 参考图像列表
- 仿UC天气下拉和微信下拉眼睛头部淡入淡出--第三方开源--PullLayout
- Java7新特性(二)IO
- HDU5163Taking Bus
- Spring MVC介绍
- Linux命令工具 top详解
- 基础算法学习笔记—归并排序
- RedisUtil工具类
- 从Slice_Header学习H.264(三.3)--相关细节之 FMO
- Android之Fragment静态加载
- 对图片进行各种样式裁对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等剪:圆形、星形、心形、花瓣形等--第三方开源--CustomShapeImageView