《疯狂java》NIO

26 篇文章 0 订阅
1.Buffer相关

一般使用CharBuffer和ByteBuffer,三个重要的概念:容量(capacity)、界线(limit)和位置(position);两个重要方法:flip()为读数据做好准备、clear()为再次装入数据做准备。

/*
* BufferTest.java
* Version 1.0.0
* Created on 2019年12月6日
* Copyright wkay
*
*/
package crazyjava_nio;

import java.nio.CharBuffer;

/**
 * @author wkay
 * @version 1.0.0
 * @since 
 * 创建时间:2019年12月6日
 * 功能描述:
 * 博客:https://me.csdn.net/qq_43502142
 * 邮箱:wkays60@163.com
 */
public class BufferTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 创建Buffer
		CharBuffer buffer=CharBuffer.allocate(8);
		System.out.println("capacity: "+buffer.capacity());
		System.out.println("limit: "+buffer.limit());
		System.out.println("position: "+buffer.position());
		//放入元素
		buffer.put("a");
		buffer.put("b");
		buffer.put("c");
		System.out.println("放入三个元素后的position: "+buffer.position());
		//调用flip()方法
		buffer.flip();
		System.out.println("执行flip()后的position: "+buffer.position()+".limit: "+buffer.limit());
		//取出元素
		System.out.println(buffer.get());
		System.out.println("取出元素后的position: "+buffer.position());
		//调用clear()方法
		buffer.clear();
		System.out.println("执行clear()后的position: "+buffer.position()+".limit: "+buffer.limit());
		System.out.println(buffer.get(2));
	}

}

2.Path和Paths相关

NIO.2引入Path接口。

/*
* PathTest.java
* Version 1.0.0
* Created on 2019年12月7日
* Copyright wkay
*
*/
package crazyjava_nio2;

import java.nio.file.Path;
import java.nio.file.Paths;


/**
 * @author wkay
 * @version 1.0.0
 * @since 
 * 创建时间:2019年12月7日
 * 功能描述:
 * 博客:https://me.csdn.net/qq_43502142
 * 邮箱:wkays60@163.com
 */
public class PathTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		Path path=Paths.get(".");//以当前路径来创建Path对象
		System.out.println("Path里包含的路径数量: "+path.getNameCount());
		System.out.println("Path的根路径: "+path.getRoot());
		
		Path aPath=path.toAbsolutePath();//获取path对应的绝对路径
		System.out.println(aPath);
		System.out.println("aPath的根路径  "+aPath.getRoot());
		
		Path path2=Paths.get("F:","workspace");
		System.out.println(path2);
	}

}

3.File和Files相关

Files类是一个高度封装的工具类,可完成文件复制、读取文件内容、写入文件等功能,可简化IO操作。

/*
* FilesTest.java
* Version 1.0.0
* Created on 2019年12月7日
* Copyright wkay
*
*/
package crazyjava_nio2;

import java.io.FileOutputStream;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

/**
 * @author wkay
 * @version 1.0.0
 * @since 
 * 创建时间:2019年12月7日
 * 功能描述:
 * 博客:https://me.csdn.net/qq_43502142
 * 邮箱:wkays60@163.com
 */
public class FilesTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		Path path=Paths.get("F:\\workspace\\src\\crazyjava_nio2\\FilesTest.java");
		//复制文件
		Files.copy(path, new FileOutputStream("a.txt"));
		//一次性读取文件所有行
		List<String> lines=Files.readAllLines(path,Charset.forName("GBK"));
		for(var line:lines) {
			System.out.println(line);
		}
		//判断文件的大小
		System.out.println("文件大小为: "+Files.size(path));
		
		//直接将多个字符串内容写入指定文件中
		List<String> poem=new ArrayList<>();
		poem.add("八月秋高风怒号");
		poem.add("卷我屋上三重茅");
		Files.write(Paths.get("peom.txt"), poem, Charset.forName("GBK"));
		//使用java8新增的Stream API读取文件内容
		Files.lines(Paths.get("peom.txt"),Charset.forName("GBK")).forEach(line->System.out.println(line));
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值