我用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("是回文"); } } } }
还有一个问题就是我注释掉的部分,为什么读取不了,第二种可以。
求各位大神指教
慕的地6079101
rookie2maven
蒲公英wsg
相关分类