5. NIO的开发使用
5.1 文件操作
5.1.1 读取文件内容
1. 第一个程序 读文件的内容,读Buffer---> String ---->程序中使用了
public class TestNIO1 {
public static void main(String[] args) throws IOException {
FileChannel channel = new FileInputStream("/Users/sunshuai/Develop/code/java/idea/netty-proj-lession/netty-basic-01/data.txt").getChannel();
ByteBuffer buffer = ByteBuffer.allocate(10);
while (true) {
int read = channel.read(buffer);
if (read == -1) break;
buffer.flip();
while (buffer.hasRemaining()) {
byte b = buffer.get();
System.out.println("(char)b = " + (char) b);
}
buffer.clear();
}
}
}
5.1.2 写入文件内容
public class TestNIO11 {
public static void main(String[] args) throws IOException {
FileChannel channel = new FileOutputStream("data1").getChannel();
ByteBuffer buffer = Charset.forName("UTF-8").encode("sunshuai");
channel.write(buffer);
}
5.1.3 文件的复制
public class TestNIO12 {
public static void main(String[] args) throws IOException {
//data---data2
/* FileInputStream inputStream = new FileInputStream("/Users/sunshuai/Develop/code/java/idea/netty-proj-lession/netty-basic-01/data.txt")
FileOutputStream fileOutputStream = new FileOutputStream("/Users/sunshuai/Develop/code/java/idea/netty-proj-lession/netty-basic-01/data2.txt")
byte[] buffer = new byte[1024]
while (true) {
int read = inputStream.read(buffer)
if (read == -1) break
fileOutputStream.write(buffer, 0, read)
}*/
/* FileInputStream inputStream = new FileInputStream("/Users/sunshuai/Develop/code/java/idea/netty-proj-lession/netty-basic-01/data.txt")
FileOutputStream fileOutputStream = new FileOutputStream("/Users/sunshuai/Develop/code/java/idea/netty-proj-lession/netty-basic-01/data2.txt")
IOUtils.copy(inputStream,fileOutputStream)
FileChannel from = new FileInputStream("/Users/sunshuai/Develop/code/java/idea/netty-proj-lession/netty-basic-01/data.txt").getChannel()
FileChannel to = new FileOutputStream("/Users/sunshuai/Develop/code/java/idea/netty-proj-lession/netty-basic-01/data2.txt").getChannel()
//传输数据上线的 2G-1
// 若果实际文件大小就是超过2G 如何进行文件的copy
//from.transferTo(0, from.size(), to)
long left = from.size()
while (left > 0) {
left = left - from.transferTo(from.size()-left, left, to)
}
}
}