InputStream is = Test.class.getResourceAsStream( "/test/中文.txt" );上面这句话执行的结果:is = null如果改为
InputStream is = Test.class.getResourceAsStream( "/test/test.txt" );
就能正常地获得输入流。也就是说只要资源名称中含有中文,就获取不到输入流了。请问是中文名时应该怎么读呢?

解决方案 »

  1.   

    可以。应该是你的路径问题。getResourceAsStream 的参数是个相对于CLASSPATH的相对路径。比如
    CLASSPATH=.;classes
    那么参数就是在 . 或者 classes 下对应的目录。和 package 相似。
      

  2.   

    最好的做法是路径/文件名中不要出现空格/中文等。我上面测试没问题是在Ubuntu下,文件编码、文件名编码都是UTF-8下通过的。
      

  3.   

    按理不应该,test.txt既然能找到,中文.txt只要不是乱码应该就能找到,或者与文件系统中的文件名要对应一致,我试下来是ok的
      

  4.   

    忘了说了,中文.txt文件是在一个jar包里。
    不能避免用户会用中文名称,所以不要说不用中文名
      

  5.   

    你在外部环境先测测,别放jar包
      

  6.   

    原来是winrar把中文文件名拖进去时编码与java不一致
    如果是用jar命令来封装的jar文件就能读到了。给分