黑马程序员技术交流社区

标题: 绝对路径和相对路径的区别和联系? [打印本页]

作者: 我心过往    时间: 2016-9-24 01:49
标题: 绝对路径和相对路径的区别和联系?
大体我知道这样:
绝对路径 例如 :  D:\\java\\HelloWorld.txt
相对路径 例如 :  HelloWorld.txt    ---------问题一:不加盘符,这里对否?
但是问题是,复制一个文件夹时,如何复制新的名字给新创建的文件夹呢?
题如下:
private static void copy(File f, String s) {          //问题二:s 是目标文件的绝对路径,但这里的  形参 f 是指源文件吧?  
                try {
                        FileInputStream in = new FileInputStream(f);
                        String name = f.getName();         //获得是源文件的名字
                        String newName = s + "\\" + name;     //问题三:为何可以这样拼接形成新的文件名?是指  绝对路径+名字???
                        FileOutputStream out = new FileOutputStream(newName);

...................................
}
谢谢了!!!



作者: xiaoyao1243    时间: 2016-9-24 01:49

问题一,不加盘符也就是相对路径,这是对的,用字节流或字符流输出的时候会新建到这个项目的根目录下,
FileOutputStream("HelloWorld.txt");FileWrite("HelloWorld.txt");
根目录就是src,bin文件夹所在的目录;
相对路径和复制文件夹没什么关系,复制文件夹文件夹的名字是不改变的,改变的只是复制文件时读取原文件后输出的新文件的名字,new FileInputStream("HelloWorld.txt");new FileOutputStream("newName");
问题二,复制文件夹时使用的形参应该是源路径和目标路径,copy(File f, String s)这是构造的方法吧?
copy(File src(源路径), File dest(目标路径))是这样的吧
问题三,String newName也就是复制过来的文件夹路径应该是目标路径 + 源路径.getName();也就是
String newName = dest + src.getName();
作者: xiaoyao1243    时间: 2016-9-24 22:25
问题一,不加盘符也就是相对路径,这是对的,用字节流或字符流输出的时候会新建到这个项目的根目录下,
FileOutputStream("HelloWorld.txt");FileWrite("HelloWorld.txt");
根目录就是src,bin文件夹所在的目录;
相对路径和复制文件夹没什么关系,复制文件夹文件夹的名字是不改变的,改变的只是复制文件时读取原文件后输出的新文件的名字,new FileInputStream("HelloWorld.txt");new FileOutputStream("newName");
问题二,复制文件夹时使用的形参应该是源路径和目标路径,copy(File f, String s)这是构造的方法吧?
copy(File src(源路径), File dest(目标路径))是这样的吧
问题三,String newName也就是复制过来的文件夹路径应该是目标路径 + 源路径.getName();也就是
String newName = dest + src.getName();
作者: xiaoyao1243    时间: 2016-9-24 22:28
自己的理解,表达不是很好,希望有帮助
作者: 我心过往    时间: 2016-9-24 23:44
xiaoyao1243 发表于 2016-9-24 22:28
自己的理解,表达不是很好,希望有帮助

今天请教别人弄懂了,感谢细心回答!因为是要复制文件夹下的文件,所以要创建新文件的绝对路径,也就是新文件的地址+\\+源文件的名字。再次感谢了!
作者: 2756898282    时间: 2016-9-26 22:27
比如说你的C盘ABC文件夹下有两个文件
c:/website/web/index.htm        第一个文件
c:/website/web/photo.jpg        第二个文件

如果要文件1说出文件2的位置(也就是路径),那么它有两种表示方法:
c:/website/web/photo.jpg
这就是绝对路径,指明2文件在C盘ABC文件下,从最大的目录C盘开始表示出来.
photo.jpg
这就是相对路径,因为1文件和2文件都在C:\ABC下,所以它们的路径前面" c:/website/"都是一样,就不用表示出来
了..

至于联系,可以用拼接的方法来实现相对路径与绝对路径的联系,都是路径,
自己多试试就知道了
作者: wangxikun    时间: 2016-9-27 13:49
简单来说,绝对路径,从根目录为起点到你所在的目录;  相对路径,从一个目录为起点到你所在的目录
作者: 我心过往    时间: 2016-9-27 20:44
wangxikun 发表于 2016-9-27 13:49
简单来说,绝对路径,从根目录为起点到你所在的目录;  相对路径,从一个目录为起点到你所在的目录 ...

谢谢!!!!
作者: 悄然林静    时间: 2016-9-28 21:38
类似于中学物理的参照系,绝对路径的参照系是根目录,相对路径的参照系是指定的目录(当指定的目录是根目录时,相对路径也就等同于绝对路径了)
作者: 我心过往    时间: 2016-9-28 23:09
悄然林静 发表于 2016-9-28 21:38
类似于中学物理的参照系,绝对路径的参照系是根目录,相对路径的参照系是指定的目录(当指定的目录是根目录 ...

嗯嗯,感谢大美女的指教!!!
作者: barny    时间: 2016-10-1 17:25
不加盘符,直接输入文件名,只能操作当前的路径下,就是默认是你项目的路径,而加上盘符\文件夹\文件名,这种形式是指你明确指定的路径,可以精确定位你需要在硬盘的哪个位置操作.
前端更多用到路径,比如关联图片等,用到的更多是相对路径,这些都是根据个人情况而选择
作者: 小明教授    时间: 2016-10-3 14:00
楼上回答的都很好,我就路过
作者: 我心过往    时间: 2016-10-4 21:12
barny 发表于 2016-10-1 17:25
不加盘符,直接输入文件名,只能操作当前的路径下,就是默认是你项目的路径,而加上盘符\文件夹\文件名,这种形 ...

谢谢美女解答!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2