读取文件路径问题?

programfish 2009-03-07 10:17:33
使用String data = read_Uni("/SJCS/" + projectName + "/PQX.txt");读取文件出错。
但是使用String data = read_Uni("/SJCS/AAA/PQX.txt");又可以啊,是怎么回事呢。
projectName 变量就是AAA
...全文
275 37 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
隧便 2009-03-19
  • 打赏
  • 举报
回复
.trim() 能取回车吗??
kf156 2009-03-16
  • 打赏
  • 举报
回复
说错了,应该是回车。
问题应该就出在这了,你给 projectName 赋值时.trim()下吧。
programfish 2009-03-16
  • 打赏
  • 举报
回复
嗯,找到了困扰几天的问题,谢谢了。
kf156 2009-03-16
  • 打赏
  • 举报
回复
多了个换行...
programfish 2009-03-16
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 kf156 的回复:]
既然如此,你这样吧,直接进行二进制比较


Java codebyte[] b=projectName.getBytes();
for(int i=0;i<b.length;i++)
System.out.print(b[i]+" ");
System.out.println();
b="AAA".getBytes();
for(int i=0;i<b.length;i++)
System.out.print(b[i]+" ");
System.out.println();



比较下,你得到的那字符变量的值到底是什么
[/Quote]
71 90 84 76 50 13
71 90 84 76 50
kf156 2009-03-16
  • 打赏
  • 举报
回复
最好将b的两次长度也输出看看。
kf156 2009-03-16
  • 打赏
  • 举报
回复
既然如此,你这样吧,直接进行二进制比较

byte[] b=projectName.getBytes();
for(int i=0;i<b.length;i++)
System.out.print(b[i]+" ");
System.out.println();
b="AAA".getBytes();
for(int i=0;i<b.length;i++)
System.out.print(b[i]+" ");
System.out.println();


比较下,你得到的那字符变量的值到底是什么
programfish 2009-03-16
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 kf156 的回复:]
引用 26 楼 programfish 的回复:
现在的问题是两个字符串用
String s = "/SJCS/" + projectName + "/PQX.txt";
System.out.println(s.compareTo("/SJCS/AAA/PQX.txt"))
的结果为负,比较的结果是两个字符串不同


两字符串比较,结果不同?
你那AAA不会是全角中文的字母吧?
[/Quote]
不是,是英文的。
kf156 2009-03-16
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 programfish 的回复:]
现在的问题是两个字符串用
String s = "/SJCS/" + projectName + "/PQX.txt";
System.out.println(s.compareTo("/SJCS/AAA/PQX.txt"))
的结果为负,比较的结果是两个字符串不同
[/Quote]

两字符串比较,结果不同?
你那AAA不会是全角中文的字母吧?
programfish 2009-03-16
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 kf156 的回复:]
看下是 private String read_Uni(String resource) 方法中有没错误
is=getClass().getResourceAsStream(resource); //特别是这句
[/Quote]看了,是对的,肯定不会是方法内部的问题,因为不用变量做路径直接用字符串是没有问题的。
kf156 2009-03-16
  • 打赏
  • 举报
回复
看下是 private String read_Uni(String resource) 方法中有没错误
is=getClass().getResourceAsStream(resource); //特别是这句
programfish 2009-03-16
  • 打赏
  • 举报
回复
现在的问题是两个字符串用
String s = "/SJCS/" + projectName + "/PQX.txt";
System.out.println(s.compareTo("/SJCS/AAA/PQX.txt"))
的结果为负,比较的结果是两个字符串不同
programfish 2009-03-16
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 kf156 的回复:]
先定位出是哪行代码报的。
[/Quote]String data = read_Uni("/SJCS/" + projectName + "/PQX.txt");
kf156 2009-03-16
  • 打赏
  • 举报
回复
先定位出是哪行代码报的。
programfish 2009-03-16
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 kf156 的回复:]
这和编码应该没关系
你报的是什么错?
你另写个测试程序,就专测这个问题。
[/Quote]
java.lang.NullPointerException
kf156 2009-03-16
  • 打赏
  • 举报
回复
这和编码应该没关系
你报的是什么错?
你另写个测试程序,就专测这个问题。
programfish 2009-03-16
  • 打赏
  • 举报
回复

String s = "/SJCS/" + projectName + "/PQX.txt";
System.out.println(s.compareTo("/SJCS/AAA/PQX.txt"))
的结果为负,比较的结果是两个字符串不同,打印出来两个字符串又是相同的,projectName 是读取的uncode文本文件里面的内容,是不是因为这个编码的问题。
programfish 2009-03-16
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 kf156 的回复:]
你这样打印出来看看:

Java codeSystem.out.println("/SJCS/" + projectName + "/PQX.txt"); //打印路径
String data = read_Uni("/SJCS/" + projectName + "/PQX.txt");

public String read_Uni(String path){
System.out.println(path)//打印路径
……//原方法中的代码
}
[/Quote]
这样的结果还是一样,/SJCS/AAA/PQX.txt,是正确的,是不是UNCODE编码的问题?
gbjgg 2009-03-16
  • 打赏
  • 举报
回复
不懂,帮顶
kf156 2009-03-16
  • 打赏
  • 举报
回复
你这样打印出来看看:
System.out.println("/SJCS/" + projectName + "/PQX.txt"); //打印路径
String data = read_Uni("/SJCS/" + projectName + "/PQX.txt");

public String read_Uni(String path){
System.out.println(path)//打印路径
……//原方法中的代码
}

加载更多回复(16)

13,097

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧