NIO 中文乱码自我解决的简单DEMO
Posted jpfss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NIO 中文乱码自我解决的简单DEMO相关的知识,希望对你有一定的参考价值。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import org.apache.commons.lang.time.DurationFormatUtils;
public class NIOTest {
public static final int SIZE = 102400;
public static final String PATH = "D:\\\\test\\\\test.txt";
public static void main(String args[]) {
//方法一测试通过
/*
try {//写数据
FileChannel fileOutChannel = new FileOutputStream(PATH,true).getChannel();
fileOutChannel.write(ByteBuffer.wrap("这是用FileOutpuStream调用NIO的Channel写出的内容".getBytes()));
System.out.println("写出成功!");
fileOutChannel.close();
//读数据
FileChannel fileInChannel = new FileInputStream(PATH).getChannel();
ByteBuffer byteBuffer = ByteBuffer.allocate(SIZE);
fileInChannel.read(byteBuffer);
byteBuffer.flip();
Charset charset = Charset.forName("UTF-8");
while (byteBuffer.hasRemaining()) {
CharsetDecoder charsetDecoder = charset.newDecoder();
CharBuffer charBuffer = charsetDecoder.decode(byteBuffer);
System.out.print(charBuffer);
}
System.out.println();
System.out.println("读入完成!");
fileInChannel.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
//方法二未经测试
try {
FileChannel fileChannel = new RandomAccessFile(PATH, "rw").getChannel();
//写数据
fileChannel.write(ByteBuffer.wrap("这是用RandomAccessFile调用NIO的Channel写出的内容".getBytes()));
System.out.println("写出成功!");
//读数据
ByteBuffer byteBuffer = ByteBuffer.allocate(SIZE);
fileChannel.read(byteBuffer);
byteBuffer.flip();
Charset charset = Charset.forName("UTF-8");
while (byteBuffer.hasRemaining()) {
CharsetDecoder charsetDecoder = charset.newDecoder();
CharBuffer charBuffer = charsetDecoder.decode(byteBuffer);
System.out.print(charBuffer);
}
System.out.println();
System.out.println("读入成功!");
fileChannel.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO: handle exception
}
}
}
查看方法一运行效果:
以上是关于NIO 中文乱码自我解决的简单DEMO的主要内容,如果未能解决你的问题,请参考以下文章
[异常解决] Keil安装好nRF51822开发环境,运行DEMO报错:Error:“GPIOTE_CONFIG_NUM_OF_LOW_POWER_ENVENTS” is undefined(代码片段