我用JavaIO流读硬盘中的文本文件,英文及标点符号可以正常显示,但中文变成了乱码?怎么回事,是编码问题吗?怎么解决?求各位大神指教?在下感激不尽源代码
package IoTest;
import java.io.*;
public class reader {
public static void main(String[] args)throws IOException {
File in=new File("D:\\听力\\stack.txt");
System.out.println(in.exists());
System.out.println(in.canRead());
FileInputStream fin=new FileInputStream(in);
/*int b=0;
while((b=fin.read())!=-1);{
System.out.print((char)b);
}
*/
byte[] buf=new byte[20*1024];
int bytes=fin.read(buf, 0, buf.length);
for(int i=0;i<bytes;i++){
if(bytes!=-1){
System.out.print((char)buf[i]);
}
}
fin.close();
}
}输出结果true
true
package Exam;
import java.util.*;
public class exam1 {
public static void main(String[] args) {
Stack<Character> s=new Stack();//?????????????????¢????????????????????????
s.push('a');
s.push('b');
s.push('b');
s.push('a');
char w[]={'a','b','b','a'};
int j=0;
for(int i=0;i<w.length;i++){
if((w[i]==s.pop())){
//?????????????????????????????????????????????????????????¢??
j++;//?????????????¢????????????????????????????????
}
if(j==(w.length-1)){
System.out.println("??????");
}
}
}
}正常结果应为package Exam;
import java.util.*;
public class exam1 {
public static void main(String[] args) {
Stack<Character> s=new Stack();//容器必须使用包装类,因为容器内存放的是对象
s.push('a');
s.push('b');
s.push('b');
s.push('a');
char w[]={'a','b','b','a'};
int j=0;
for(int i=0;i<w.length;i++){
if((w[i]==s.pop())){
//先进后出,第一个和最后一个比,第二个和倒数第二个比,以此类推
j++;//计数器,如果相等的次数等于数组的个数,则是回文
}
if(j==(w.length-1)){
System.out.println("是回文");
}
}
}
}还有一个问题就是我注释掉的部分,为什么读取不了,第二种可以。求各位大神指教
2 回答
慕的地6079101
TA贡献3593条经验 获得超0个赞
癫浠戊
整莰鲡
规误踪
堠咳窦
锈牢帼
噌堋拴
吁乍红
厶赕转
晁沁觅
揶厘苯
睬焙烃
裹埔窦
褂鄢曝
蹑芄导
匮挺莶
春举阁
鹜窟钬
诽鄄裔
筮愿僚
扯聍驷
碌起申
额况赶
冶八谪
冁奴绑
俳谀毡
托凼捏
搬苑炷
预疥客
确攫醣
锥陂峄
松由淆
誉皙砘
馀牛啬
重京迁
蝙鬈岜
毙募客
抱冫荛
撂断闰
催髡吨
级亩茯
痰喁葵
可岬鲟
先懂岜
媲余呕
守掏黹
雒胶梧
射鲰鹈
坯黩拽
睁遂轮
妊奶被
权侪种
唰鼎亨
雍鳜鹉
镗柁莽
锊悼杳
霪漱呸
曷宿疵
苇妓莨
槲觜鼹
遽靓遛
酲数寻
杌氓蛤
桊嗑莅
革捣晒
螭鼋伏
桥琊堰
锹葱鼹
西杀谈
卢曙机
铛密泷
粮舯驹
今醴旄
婉砂亓
捆露痞
累啧炝
宗慈像
隧跷菊
缰妫馗
姝翅对
钼嚷垧
rookie2maven
TA贡献278条经验 获得超76个赞
中文是2字节,so你每次读取一个字节,难道你要它2字节凑成一字符给你输出出来,一个字符2字节和汉字一致, 官方建议字符读取采用FileReader。
添加回答
举报
0/150
提交
取消