java中文件“复制”操作的一系列问题
我想在eclipse上写个工程,打个jar包自己用,现在在文件复制这块遇到难题了。我的大致思路是这样的,copyFile(StringsrcFile,StringdstF...
我想在eclipse上写个工程,打个jar包自己用,现在在文件复制这块遇到难题了。
我的大致思路是这样的,copyFile(String srcFile,String dstFile)。源文件必须得有,很好判断;但是目标文件及其路径是一个问题。dstFile可以只是是路径,也可以是路径加文件,比如:【c:\file】、【c:\file.txt\】、【c:\a.txt\b.xt】就当做是路径处理;如【c:\a.txt\b.txt.txt】则当做文件处理,视为要把源文件拷贝并重命名(如果srcFile==dstFile,就直接把dstFile当做路径处理)。
我的问题是:
1、首先要判断文件路径是否合法,包括
a>磁盘驱动器存在,
b>没有不合法的字符;
即最后是能建有这样的路径的;
2、分析dstFile判断是路径加文件,还是只不过是路径。包括:
a>以"\"结尾和srcFile==dstFile的直接是路径,
b>以系统已知文件类型结尾的不管与源文件类型是否相同均视为文件,
c>字符串末尾到最后一个"\"之间的字符能组成合法文件夹名的视为路径,
d>其他提示错误。
求解:
先请高手帮我分析一下有没有更加合理的思路,再请帮我理一下代码逻辑,不胜感激!! 展开
我的大致思路是这样的,copyFile(String srcFile,String dstFile)。源文件必须得有,很好判断;但是目标文件及其路径是一个问题。dstFile可以只是是路径,也可以是路径加文件,比如:【c:\file】、【c:\file.txt\】、【c:\a.txt\b.xt】就当做是路径处理;如【c:\a.txt\b.txt.txt】则当做文件处理,视为要把源文件拷贝并重命名(如果srcFile==dstFile,就直接把dstFile当做路径处理)。
我的问题是:
1、首先要判断文件路径是否合法,包括
a>磁盘驱动器存在,
b>没有不合法的字符;
即最后是能建有这样的路径的;
2、分析dstFile判断是路径加文件,还是只不过是路径。包括:
a>以"\"结尾和srcFile==dstFile的直接是路径,
b>以系统已知文件类型结尾的不管与源文件类型是否相同均视为文件,
c>字符串末尾到最后一个"\"之间的字符能组成合法文件夹名的视为路径,
d>其他提示错误。
求解:
先请高手帮我分析一下有没有更加合理的思路,再请帮我理一下代码逻辑,不胜感激!! 展开
展开全部
一家之言:
1、首先要判断文件路径是否合法,包括
a>磁盘驱动器存在,
b>没有不合法的字符;
//这一步直接catch IOException
try{
File src = new File(fileName);
}catch(final IOException exp){
//如果IOEXP发生,表明源文件不存在或者有问题
}
即最后是能建有这样的路径的;
2、分析dstFile判断是路径加文件,还是只不过是路径。包括:
a>以"\"结尾和srcFile==dstFile的直接是路径,
b>以系统已知文件类型结尾的不管与源文件类型是否相同均视为文件,
c>字符串末尾到最后一个"\"之间的字符能组成合法文件夹名的视为路径,
d>其他提示错误。
//没有必要这么麻烦吧 。
file.isDirctory()--->路径
file.isFile()--->文件
求解:
先请高手帮我分析一下有没有更加合理的思路,再请帮我理一下代码逻辑,不胜感激!!
个人觉得
1) validationOnSouceFile();
2) Check des file
3) copy()----
1、首先要判断文件路径是否合法,包括
a>磁盘驱动器存在,
b>没有不合法的字符;
//这一步直接catch IOException
try{
File src = new File(fileName);
}catch(final IOException exp){
//如果IOEXP发生,表明源文件不存在或者有问题
}
即最后是能建有这样的路径的;
2、分析dstFile判断是路径加文件,还是只不过是路径。包括:
a>以"\"结尾和srcFile==dstFile的直接是路径,
b>以系统已知文件类型结尾的不管与源文件类型是否相同均视为文件,
c>字符串末尾到最后一个"\"之间的字符能组成合法文件夹名的视为路径,
d>其他提示错误。
//没有必要这么麻烦吧 。
file.isDirctory()--->路径
file.isFile()--->文件
求解:
先请高手帮我分析一下有没有更加合理的思路,再请帮我理一下代码逻辑,不胜感激!!
个人觉得
1) validationOnSouceFile();
2) Check des file
3) copy()----
展开全部
其实思路很简单:判断srcFile是否是个文件,判断dstFile是否是个文件目录
//第一参数srcFile,主要是判断该参数生成的file是否存在并且是否是一个文件(注意不是文件夹,是文件)
File file = new File(srcFile);
if(!file.exists()||!file.isFile()){
return "error";
}
//第二个参数dstFile判断该路径生成的File是否存在并且是否是一个文件夹(注意是文件夹,不是文件)
File file = new File(dstFile);
if(!file.exists()||!file.isDirectory()){
return "";
}
//第一参数srcFile,主要是判断该参数生成的file是否存在并且是否是一个文件(注意不是文件夹,是文件)
File file = new File(srcFile);
if(!file.exists()||!file.isFile()){
return "error";
}
//第二个参数dstFile判断该路径生成的File是否存在并且是否是一个文件夹(注意是文件夹,不是文件)
File file = new File(dstFile);
if(!file.exists()||!file.isDirectory()){
return "";
}
追问
很对,确实是知道源是文件,目标是文件夹就可以拷贝了,但我就是还想让程序“智能”一点,所以不厌其烦地搞这个东西。最近在学习文件I/O,只懂点皮毛,原来我以为String不能通过转成File再判断,非要通过String去判断,结果入了死胡同;你的一番讲解解决了我的大问题。我相信我最后的目的还是像你分析的这样,既简单又清楚;不过我现在还在学习中,想费些精力去琢磨,呵呵。非常感谢你的回答!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询