j**a RandomAccessFile readLine 中文 乱码

时间:2015.09.20 发布人:sdrtyhg10

j**a RandomAccessFile readLine 中文 乱码

已解决问题

谷歌sdrtyhg10用户在2015.09.20提交了关于“李大霄j**a RandomAccessFile readLine 中文 乱码”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-11-27T02:40:56。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,真心佩服你,谢谢 !

希望以下的回答,能够帮助你。

第1个回答

用户名:Mi来自ffy_Lee_89  

读取的切制执之当素全束级时候,进行下编码就可以了

/**
*读取文件内容
*
*@pa厂步缩rampath
*路径
*@return文件内容string
*@author金鑫
*@version3.0时间:2010年1月23日14:56:44
*/
publicstaticStringgetFileContent(Stringpath){
Filefile=newFile(path);
//分配新的直接字节缓冲区
ByteBufferbyteBuffer=ByteBuffer.allocateDirect(186140);
StringBu讲按销色fferstringBuffer=newStringBuffer(186140);
三try{
FileInputStreamfileInputStream=ne李四乙wFileInputStream(file);
//用于读取、写入半降术宜互际、映射和操作文件的通道
FileChannelfileChannel=fileInputStream.getChannel();
//编码字符集和字符编码方案的组合,用于处理中文,可以更改
Charsetcharset=Charset.forName("GBK");
while(***.read(byteBuffer)!=-1){
//反转跳此缓冲区
byteBuffer.flip();
CharBuffercharBuffer=charse轮路机律特害没t.decode(byteBuffer);
stringBuffer.append(charBuffer.toStr后跳治蛋右白音粮被停结ing());
byteBuffer.clear(者否员);
}
fileInputStream.close();
}catch(FileNotFoundExceptione){
e.pr剂洋什牛么科笔宣非intStackTrace(免该屋宽还孔减);
}catch(IOExceptione){
e.printStack印被置备巴四条源Trace();
}
ret可突般居超剧永urnstringBuffer.toString();
}


你用的RandomAccessFile把上面的相应的类替换掉

最主要的是这一句
Charsetcharset=Charset.forName("GBK");

和循环里面的CharBuffercharBuffer=charset.decode(byteBuffer);