java BufferedReader部分输出乱码求助
答案:3 悬赏:60 手机版
解决时间 2021-02-23 22:01
- 提问者网友:练爱
- 2021-02-23 05:30
java BufferedReader部分输出乱码求助
最佳答案
- 五星知识达人网友:独行浪子会拥风
- 2021-02-23 06:57
可以尝试使用:BufferedReader br = new BufferedReader(new InputStreamReader(System.in,"UTF-8"));
最好直接用DataInputStream dis 和 DataOutputStream dos,这样的话读取、发送数据时使用dis.writeUTF()和dos.readUTF()即可,不要再考虑乱码问题。
最好直接用DataInputStream dis 和 DataOutputStream dos,这样的话读取、发送数据时使用dis.writeUTF()和dos.readUTF()即可,不要再考虑乱码问题。
全部回答
- 1楼网友:由着我着迷
- 2021-02-23 07:44
正常读写英文时用没问题
FileReader fre = new FileReader("E:\\TEST\\readText.txt");
FileWriter fwi = new FileWriter("E:\\TEST\\readText2.txt");
BufferedReader bufr = new BufferedReader(fre );
BufferedWriter bufw = new BufferedWriter(fwi );
String line = null; while((line = bufr.readLine()) != null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
读取中文时需要用GBK,否则会出现乱码
File fileIn= new File("E:\\TEST\\readText.txt");
File fileOut= new File("E:\\TEST\\readText2.txt");
InputStreamReader inStream = new InputStreamReader(new FileInputStream(fileIn), "GBK");
OutputStreamWriter writerStream = new OutputStreamWriter(new FileOutputStream(fileOut),"GBK");
BufferedReader reader = new BufferedReader(inStream);
BufferedWriter writer = new BufferedWriter(writerStream);
String lineWriter = null;while ((lineWriter = reader.readLine()) != null) {
writer.write(lineWriter);
writer.newLine();
writer.flush();
}
reader.close();
writer.close();
- 2楼网友:低音帝王
- 2021-02-23 07:14
因为inputstreamreader是字节输出(汉字会被分为两个字节),而bufferedreader是它的“包装”(整行读取),效率更高,所以配合使用更好。
可以通过bufferedreader 流的形式进行流缓存,之后通过readline方法获取到缓存的内容。
bufferedreader bre = null;
try {
bre = new bufferedreader(new inputstreamreader(system.in));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readline())!= null) // 判断最后一行不存在,为空结束循环
{
system.out.println(str);//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯