1、NioTest13_In.txt文件内容拷贝到NioTest13_Out.txt文件中
public class NioTest13 { public static void main(String[] args) throws Exception { String inputFile = "NioTest13_In.txt"; String outFile = "NioTest13_Out.txt"; RandomAccessFile inputRandomAccessFile = new RandomAccessFile(inputFile,"r"); RandomAccessFile outputRandomAccessFile = new RandomAccessFile(outFile,"rw"); long inputLength = new File(inputFile).length(); FileChannel inputFileChannel = inputRandomAccessFile.getChannel(); FileChannel outputFileChannel = outputRandomAccessFile.getChannel(); MappedByteBuffer inputData = inputFileChannel.map(FileChannel.MapMode.READ_ONLY, 0, inputLength); System.out.println("================================"); /*Charset.availableCharsets().forEach( (k,v) -> { System.out.println(k + ", " + v); });*/ System.out.println("================================"); Charset charset = Charset.forName("iso-8859-1"); //utf-8 CharsetDecoder decoder = charset.newDecoder(); //字节数组转字符串 CharsetEncoder encoder = charset.newEncoder(); //字符串转字符数组 CharBuffer charBuffer = decoder.decode(inputData); ByteBuffer outputData = encoder.encode(charBuffer); outputFileChannel.write(outputData); inputRandomAccessFile.close(); outputRandomAccessFile.close(); } }
2、创建"NioTest13_In.txt文件
3、执行后生成了NioTest13_Out.txt 文件
可以知道使用: Charset charset = Charset.forName("iso-8859-1"); //utf-8
使用iso-8859-1和utf-8,中文显示都是正常的