判断文件的编码格式,音视频开发工程师面试题

  1. * JChardetFacade、ASCIIDetector、UnicodeDetector。

  2. * detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的

  3. * 字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar

  4. * cpDetector是基于统计学原理的,不保证完全正确。

  5. */

  6. CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();

  7. /*

  8. * ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于

  9. * 指示是否显示探测过程的详细信息,为false不显示。

  10. */

  11. detector.add(new ParsingDetector(false));

  12. /*

  13. * JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码

  14. * 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以

  15. * 再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。

  16. */

  17. detector.add(JChardetFacade.getInstance());// 用到antlr.jar、chardet.jar

  18. // ASCIIDetector用于ASCII编码测定

  19. detector.add(ASCIIDetector.getInstance());

  20. // UnicodeDetector用于Unicode家族编码的测定

  21. detector.add(UnicodeDetector.getInstance());

  22. java.nio.charset.Charset charset = null;

  23. File f = new File(path);

  24. try {

  25. charset = detector.detectCodepage(f.toURI().toURL());

  26. } catch (Exception ex) {

  27. ex.printStackTrace();

  28. }

  29. if (charset != null)

  30. return charset.name();

  31. else

  32. return null;

  33. }

/**

  • 利用第三方开源包cpdetector获取文件编码格式

  • @param path

  •        要判断文件编码格式的源文件的路径
    
  • @author huanglei

  • @version 2012-7-12 14:05

*/

public static String getFileEncode(String path) {

/*

  • detector是探测器,它把探测任务交给具体的探测实现类的实例完成。

  • cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、

  • JChardetFacade、ASCIIDetector、UnicodeDetector。

  • detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的

  • 字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar

  • cpDetector是基于统计学原理的,不保证完全正确。

*/

CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();

/*

  • ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于

  • 指示是否显示探测过程的详细信息,为false不显示。

*/

detector.add(new ParsingDetector(false));

/*

  • JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码

  • 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以

  • 再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。

*/

detector.add(JChardetFacade.getInstance());// 用到antlr.jar、chardet.jar

// ASCIIDetector用于ASCII编码测定

detector.add(ASCIIDetector.getInstance());

// UnicodeDetector用于Unicode家族编码的测定

detector.add(UnicodeDetector.getInstance());

java.nio.charset.Charset charset = null;

File f = new File(path);

try {

charset = detector.detectCodepage(f.toURI().toURL());

} catch (Exception ex) {

ex.printStackTrace();

}

if (charset != null)

return charset.name();

else

return null;

}

[java] view plain copy print ?

  1. String charsetName = getFileEncode(configFilePath);

  2. System.out.println(charsetName);

  3. inputStream = new FileInputStream(configFile);

  4. BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, charsetName));

String charsetName = getFileEncode(configFilePath);

System.out.println(charsetName);

inputStream = new FileInputStream(configFile);

BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, charsetName));

读jar包内部资源文件(先利用cpdetector检测jar内部的资源文件的编码格式,然后以检测到的编码方式去读文件):

[java] view plain copy print ?

  1. /**

  2. * 利用第三方开源包cpdetector获取URL对应的文件编码

  3. *

  4. * @param path

  5. *            要判断文件编码格式的源文件的URL

  6. * @author huanglei

  7. * @version 2012-7-12 14:05

  8. */

  9. public static String getFileEncode(URL url) {

  10. /*

  11. * detector是探测器,它把探测任务交给具体的探测实现类的实例完成。

  12. * cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、

  13. * JChardetFacade、ASCIIDetector、UnicodeDetector。

  14. * detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的

  15. * 字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar

  16. * cpDetector是基于统计学原理的,不保证完全正确。

  17. */

  18. CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();

  19. /*

  20. * ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于

  21. * 指示是否显示探测过程的详细信息,为false不显示。

  22. */

  23. detector.add(new ParsingDetector(false));

  24. /*

  25. * JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码

  26. * 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以

  27. * 再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。

  28. */

  29. detector.add(JChardetFacade.getInstance());// 用到antlr.jar、chardet.jar

  30. // ASCIIDetector用于ASCII编码测定

  31. detector.add(ASCIIDetector.getInstance());

  32. // UnicodeDetector用于Unicode家族编码的测定

  33. detector.add(UnicodeDetector.getInstance());

  34. java.nio.charset.Charset charset = null;

  35. try {

  36. charset = detector.detectCodepage(url);

  37. } catch (Exception ex) {

  38. ex.printStackTrace();

  39. }

  40. if (charset != null)

  41. return charset.name();

  42. else

  43. return null;

  44. }

/**

  • 利用第三方开源包cpdetector获取URL对应的文件编码

  • @param path

  •        要判断文件编码格式的源文件的URL
    
  • @author huanglei

  • @version 2012-7-12 14:05

*/

public static String getFileEncode(URL url) {

/*

  • detector是探测器,它把探测任务交给具体的探测实现类的实例完成。

  • cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、

  • JChardetFacade、ASCIIDetector、UnicodeDetector。

  • detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的

  • 字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar

  • cpDetector是基于统计学原理的,不保证完全正确。

*/

文末

当你打算跳槽的时候,应该把“跳槽成功后,我能学到什么东西?对我的未来发展有什么好处”放在第一位。这些东西才是真正引导你的关键。在跳槽之前尽量“物尽其用”,把手头上的工作做好,最好是完成了某个项目或是得到提升之后再走。跳槽不是目的,而是为了达到最终职业目标的手段

最后祝大家工作升职加薪,面试拿到心仪Offer.
为此我在文末整理了一些关于移动开发者需要的资料,欢迎大家免费领取
领取方式:点击我的GitHub


在文末整理了一些关于移动开发者需要的资料,欢迎大家免费领取
领取方式:点击我的GitHub

[外链图片转存中…(img-lVujhHoA-1646562930957)]
[外链图片转存中…(img-Qq9eOtl4-1646562930959)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值