2 yl123456654321 yl123456654321 于 2015.05.27 16:32 提问

求助啊!java文件路径的问题

从客户端传入一个文件路径:C:\Users\msg.log
在服务器端接受到后无法获取指定的文件(确定文件路径下文件存在)
服务器端:

BufferedReader reader = new BufferedReader(
        new InputStreamReader(socket.getInputStream()));
String str = null;
char[] temp = new char[1024];
reader.read(temp);
str = String.valueOf(temp);
DataInputStream dis = new DataInputStream(
        new FileInputStream(str));

试验过如果在这里直接给str赋值C:\Users\msg.log是可以取到文件的
也试过replaceAll(),但是使用str.replaceAll("\", "\\");会报错

5个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.05.27 16:45
已采纳

1、先确定temp接收到的值是否正确
2、str.replaceAll("\\", "\\\\");替换成\

danielinbiti
danielinbiti 回复ICTY: 如果没啥问题,帮忙顺手采纳一下
大约 3 年之前 回复
danielinbiti
danielinbiti 回复ICTY: 恩,socket接收结尾符是需要注意的。
大约 3 年之前 回复
yl123456654321
yl123456654321 ...嗯,打印出来后边有很多空格!唉 还是没经验啊!谢谢谢谢大家
大约 3 年之前 回复
danielinbiti
danielinbiti 回复ICTY: 加一个处理特殊字符比如(回车、换行符、制表符),这种直接直接看有时看不出来。
大约 3 年之前 回复
danielinbiti
danielinbiti 回复ICTY: 看一下接收时字符串后面是不是多了软回车之类的字符。
大约 3 年之前 回复
yl123456654321
yl123456654321 好郁闷啊!无论是转成单斜杠还是双斜杠都无法找到该文件(Invalid file path)。但是要是直接给str赋值C:\Users\msg.log却是可以找到该文件!
大约 3 年之前 回复
danielinbiti
danielinbiti 回复ICTY: str=str.replaceAll("4个\","8个\");注意replaceAll后需要重新赋值给str才行
大约 3 年之前 回复
danielinbiti
danielinbiti 回复ICTY: 关键是temp对吗?
大约 3 年之前 回复
yl123456654321
yl123456654321 这样却还是找不到该文件,str.replaceAll后把str重新赋值为C:\\Users\\ipmsg.log(都是双斜杠)就可以找到该文件。真心不知道怎么解决啊!
大约 3 年之前 回复
danielinbiti
danielinbiti 回复ICTY: 呃,被网站自动截了,前面是4个\,后面是8个\就是替换成双\
大约 3 年之前 回复
yl123456654321
yl123456654321 报的错是:Exception in thread "Thread-1" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
大约 3 年之前 回复
yl123456654321
yl123456654321 str和temp接受的值打印出来都是C:\Users\msg.log,但是str.replaceAll("\\", "\\\\");时会报错:
大约 3 年之前 回复
wsh1992o
wsh1992o   Rxr 2015.05.27 16:35

绝对路径就表示一个固定的路径,比如:C:\Documents and Settings\All Users\index.asp 那就表示访问电脑上这个路径上的index.asp 相对就表示基于这个目录下的文件比如: ../index.asp 就是网站目录的这个文件。 所以,最好不要用绝对路径.

yl123456654321
yl123456654321 这个文件路径是另一个聊天软件默认的log保存路径,相对固定,我也是做测试用.....
大约 3 年之前 回复
edouardzyc
edouardzyc   2015.05.27 16:48

你看取到的str的值是什么呗,可能是编码的问题
你用replaceAll() 想要做什么? replaceAll是正则匹配,用replace就可以了

yl123456654321
yl123456654321 我也郁闷!完全不知道为什么会这样
大约 3 年之前 回复
edouardzyc
edouardzyc 回复ICTY: 这就奇怪了 你说直接给str赋值C:\Users\msg.log是可以的, 但是这里str获取的值和你直接赋的值是一样的,为什么不行
大约 3 年之前 回复
yl123456654321
yl123456654321 str取得的值是C:\Users\msg.log,已经换成replace,但是却找不到该文件
大约 3 年之前 回复
chentravelling
chentravelling   2015.05.27 17:39

str=str.replaceAll("\\", "\\\\"); 请注意第二个参数是8个\

chentravelling
chentravelling 醉了,第一个参数是"4个斜杠",第二个参数是“8个斜杠”
大约 3 年之前 回复
qq_16794101
qq_16794101   2015.05.27 23:21

绝对路径就表示一个固定的路径,比如:C:\Documents and Settings\All Users\index.asp 那就表示访问电脑上这个路径上的index.asp 相对就表示基于这个目录下的文件比如: ../index.asp 就是网站目录的这个文件。 所以,最好不要用绝对路径.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
vb拖动
求助啊~~
安卓studio.doc
求助大神啊
求助求助啊!!!
C:/Program Files/Microsoft Visual Studio/MyProjects/vicyory/q/a.cpp(7) : error C2146: syntax error : missing ';' before identifier 'data' C:/Program Files/Microsoft Visual Studio/MyProjects/vicyory/q/a.cpp(7) : error C2501: 'ElemType' : missing storage-cl
主啊,求你搭救我。
主教导我们不要“杀人”,因为恨人也是杀人了,所以不要再嫉恨别人。 主用他那大能的双手引导我们,让真光照耀我们,而我们却仍旧用那属世的标题来衡量这一切,丝毫没有进步,依旧要到黑暗里去。 我的眼昏暗,心被蒙蔽,心胸狭窄,总是盯住那一点点的小利益,不肯做出一点点的牺牲,若是付出一点点的牺牲,便会心中时刻的挂念,自己吃亏了,自己多做了,你看那人什么都不懂,我凭什么要关照他,这一切都是我自己的功劳,乃
求助啊 求助
package com.example.gengxin; import com.example.gengxin1.updateA; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Bui
求助啊~~
问题解决,谢谢各位 我在Tomcat中建立了一个文件,想在Eclipse中实现从该文件中下载其中的XML文件。 这个下载类: public class HttpDownloader { private URL url = null; public String Download(String urlStr) { StringBuffer sb= new Stri
求助啊
基于Visual C++语言,运用数字图像处理算法中的轮廓跟踪法算法和一般图形Voronoi图算法揉合,而不用在一般图形生成源上找足够多的能够代表图形的点生成源,使Voronoi图能够根据不同的生成源能够自动生成算法。
【Java】关于文件路径问题总结
虽然文件路径在项目中不是经常的用到,用到的时候却不能灵活的使用,故在此总结。 绝对路径和相对路径 绝对路径:绝对路径是指文件在硬盘上真正存在的路径。 相对路径:相对于当前用户目录的相对路径 获取当前路径的方法 System.getProperty(“user.dir”)函数获取当前路径 //获取当前用户的路径 String path = System.g
我的源码
JSP的分页问题.求助!
求助啊,单片机交通灯问题
//以下程序只能完成一个周期,不能连续执行 #include     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include   #define uchar unsigned char #define uint  unsigned int #define ulang unsigned lang static unsigned char count;