zoukankan      html  css  js  c++  java
  • 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 {
    			 RandomAccessFile randomAccessFile = new RandomAccessFile(PATH, "rw");
    			//写数据
    			randomAccessFile.writeUTF("这是用RandomAccessFile调用NIO的Channel写出的内容");
    			System.out.println("写出成功!");
    			//读数据
    			randomAccessFile.seek(0);
    			System.out.println(randomAccessFile.readUTF());
    			System.out.println("读入成功!");
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO: handle exception
    		}
    		
    	}
    	
    	
    	
    
    }
    
    

    查看方法一运行效果:

  • 相关阅读:
    设置屏幕分辨率的函数 回复 "董勇" 的问题
    Delphi 的内存操作函数(5): 复制内存
    汉字与区位码(1) 转换函数
    汉字与多字节编码的转换 回复 "不知道" 的问题
    一个可以显示多边形的 TMyShape 类 回复 "董勇" 的问题
    Delphi 的内存操作函数(6): 跨进程的内存分配
    Delphi 中的 IfThen 函数 回复 "深挖洞、广积粮" 的问题
    Byte 数组转字符串 回复 "不知道" 问题
    汉字与区位码(2) 分析
    获取各种编码的识别符
  • 原文地址:https://www.cnblogs.com/jpfss/p/8991551.html
Copyright © 2011-2022 走看看