zoukankan      html  css  js  c++  java
  • Scanner遇上UnmappableCharacterException

    上周末的时候。朋友约好去KTV,鉴于我这样的不怎么听歌的孩子伤不起啊,灵机一动就把我的酷狗歌单导出来了,XML文件嘛,内容太多,我仅仅想要歌名足已。

    于是写了一个java去输出歌名。

        岂料我受到了挫伤,scanner.hasNextLine()一直为false,于是我百思不得姐啊,经过调试发现,Scanner内部有java.nio.charset.UnmappableCharacterException,就百度了一下,没找到答案。google訪问不了。想起公司的网络是香港的,就远程上去,还好在stackoverflow上找到了答案。O(∩_∩)O~~
      原来用修改以下一行就OK啦,不解释,你懂的。不懂就去stackoverflow。
        Scanner scanner=new Scanner(new File(filePath),"UTF-8");
    URL:http://stackoverflow.com/questions/19252321/findwithinhorizon-fails-to-match (这个页面上你能够学到很多其它) 

    Java Code:        
    1. public void output(String filePath) throws FileNotFoundException{
    2. Scanner scanner=new Scanner(new File(filePath));
    3. String str=null;
    4. while(scanner.hasNextLine()){
    5. str=scanner.nextLine();
    6. if(str.indexOf("FileName")>0){
    7. System.out.println(str.substring(str.indexOf(">")+1, str.lastIndexOf("<")));
    8. }
    9. }
    10. scanner.close();
    11. }
    File content:
    1. <File>
    2. <MediaFileType>0</MediaFileType>
    3. <FileName>周杰伦 - 爱在西元前.mp3</FileName>
    4. <FilePath>D:music</FilePath>
    5. <FileSize>5623610</FileSize>
    6. <Duration>234292</Duration>
    7. <Hash>0589341ba15528a4c63e36c49a3c0e45</Hash>
    8. <Lyric>E:KuGouLyric周杰伦 - 爱在西元前-0589341ba15528a4c63e36c49a3c0e45.krc</Lyric>
    9. <Bitrate>192004</Bitrate>
    10. <MandatoryBitrate>0</MandatoryBitrate>
    11. </File>
    Java Code after modify:
    1. public void output(String filePath) throws FileNotFoundException{
    2. Scanner scanner=new Scanner(new File(filePath),"UTF-8");//Always explicitly pass a charset when working with text
    3. String str=null;
    4. while(scanner.hasNextLine()){
    5. str=scanner.nextLine();
    6. if(str.indexOf("FileName")>0)
    7. System.out.println(str.substring(str.indexOf(">")+1, str.lastIndexOf("<")));
    8. }
    9. //It's better to check IOException when working with Scanner(PS:find UnmappableCharacterException took me more time,finally by debug to found )
    10. IOException ioException = scanner.ioException();
    11. if (ioException != null) {
    12. ioException.printStackTrace();
    13. }
    14. scanner.close();
    15. }
  • 相关阅读:
    7、注解@Mapper、@MapperScan
    SpringBoot
    正则表达式"(^|&)" ,什么意思?
    JSON.NET的Self referencing loop detected with type的原因以及解决办法
    jquery ajax 中各个事件执行顺序
    Lucene BooleanQuery中的Occur.MUST与Occur.Should
    lucene中Field简析
    IDENTITY、SCOPE_IDENTITY、IDENT_CURRENT的分析
    HTML5学习(1)简介
    HTML学习(17)URL
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6830986.html
Copyright © 2011-2022 走看看