关于文件路径方面的小麻烦

写程序的时候经常引用外部资源,这个时候通过文件路径定位就相当重要了。

问题提出

在Eclipse工程中写一段代码,想要调用工程中的某一个资源文件。

File file=new File("/EclipseProj/res.txt");
.... //读取文件

一运行,总是说res.txt找不到。只要将路径改成"EclipseProj/tes.txt"即可。不知为什么?

症结所在

没有搞清楚相对路径中‘ ‘的作用,"/Director/File"与"Director/File"完全是两个不同的路径。

下面详细看看文件路径的表示。

关于文件路径的表示一般两种:绝对路径 和相对路径

1、绝对路径

很简单,举个例子  e:/everywork/cwf/WriteFree/resource.txt

这种从根目录开始一级一级目录完全表示出来的形式就是绝对路径。

2、相对路径

(1)  WriteFree/resource.txt 形式

这种形式是相对与当前目录 而言的。如果你当前所在的目录是e:/everywork/cwf/,你们系统会在这个目录下寻找WriteFree/resource.txt,自然和绝对路径是一样的。当然,如果当前目录是e:/,这样就在e盘符下的第一级目录中寻找WriteFree/resource.txt,其实也就是e:/WriteFree/resource.txt。

(2)  /WriteFree/resource.txt 形式

这种以 ‘/‘ 开头的相对路径形式很有迷惑性。

通常我们使用 ‘/‘ 来表示根目录 ,/WriteFree/resource.txt就表示resource.txt文件在系统的根目录上的WriteFree目录里。但是这样使用对于初学者来说是具有风险性的,因为要知道这里所指的根目录并不是你的当前目录,而是你资源所在的磁盘的根目录, 也就是所跟目录是c:/  e:/  g:/之类的。那么这种相对路径形式其实是相对于根目录而言,等同于绝对路径e:/WriteFree/resource.txt。

下面我们在Eclipse中写一个读工程内资源文件的例子来看看: 
(1)用Eclipse建立一个工程WriteFree放在e:\everywork\cwf目录下,然后在工程中放入资源文件res/resource.txt 
(2)在WriteFree工程下编写代码:

File f1=new File("res/resource.txt");
System.out.println("f1:"+f1.getAbsoluteFile());
File f2=new File("/res/resource.txt");
System.out.println("f2:"+f2.getAbsoluteFile());
//运行结果如下:  f1:  e:\everywork\cwf\WriteFree\res\resource.txt
//                       f2:  e:\res\resource.txt 

(3)结果很明显,小小的差别导致f1和f2两个路径截然不同

时间: 2024-08-03 15:14:46

关于文件路径方面的小麻烦的相关文章

C#通过文件路径获取文件名小技巧

string fullPath = @"\WebSite1\Default.aspx"; string filename = System.IO.Path.GetFileName(fullPath);//文件名 “Default.aspx” string extension = System.IO.Path.GetExtension(fullPath);//扩展名 “.aspx” string fileNameWithoutExtension = System.IO.Path.GetF

新手迷惑:复制文件路径报错java.io.FileNotFoundException

? 被这个问题搞了很久,可能是太基本了,所以很多人都解决不了,自己找了很多网页,都讲得太高深了,解决不了问题.于是乎,自己捯饬了很久,才能清楚这个简单.很简单的问题.还是记录一下,好记性不如烂笔头,方便后来人! ? 问题:复制文件路径报错java.io.FileNotFoundException: (文件名.目录名或卷标语法不正确.) ? 方法就是:复制路径之后,把最前面的空格去掉就是了,加上双引号.. ? ? ? ? ? ? ? ? ? 很基本吧,但是没人告诉你,就有可能自己摸索很久,哎,小问

修改数据文件和日志文件路径

环境及需求操作系统:Microsoft Windows Server 2008 R2 Enterprise数据库:Microsoft SQL Server 2008 R2 (SP3)服务器增加Fusion-io存储,需将数据库文件迁移到Fusion-io迁移文件必定涉及数据库服务的重启,给定维护时间1小时.服务器上只安装一个数据库实例,实例下面有33个用户数据库(一个小游戏对应一个库),部分数据库有多个数据文件.考虑到要迁移的数据文件个数有107个,最佳方式是使用: ALTER DATABASE

[C/C++标准库]_[初级]_[构造文件路径(stringByAppendingPathComponent)]

场景: 1. 很多情况下需要通过文件夹和文件名拼接文件路径字符串,每次都需要判断是否需要添加路径分隔符seperator很麻烦,所以可以写一个通用函数. 2. 大多数情况下都是windows使用wstring,mac使用string,所以用模版实现最通用. 函数: template<class T> T AppendPathComponent(const T& source,const T& component) { int length = source.length();

MYSQL连接端口被占引入文件路径错误

今天早上打算本地win7机器上用Wampserver搭建PHP环境,把自己的小程序配置上去.下载最新的wampserver 3.0.6版本安装后,发现mysql一直无法运行,以为是wampserver版本问题,随后又下载了相关2.4,2.5等相关版本安装,依旧没有解决,主要现象是mysql命令符中输入密码回车之后没有反应,随后命令符自动消失,另外就是在PHPMyAdmin中输入密码直接出现连接超时等的三条错误提示,或者是提示无法连接.后来我直接卸载了wampserver,改用phpStudy搭建

一键复制文件路径

有时候我们在上传文件的时候,需要填写文件的完整路径,但是复制文件路径非常麻烦,首先需要复制文件所在 目录的地址,然后再加上文件的完整名称.这么做是非常让人非常不舒服的事,我们需要一个快捷的方式来复制整个文 件的完整路径,方法如下: 首先打开资源管理器,找到需要复制路径的文件或文件夹,接着按住"Shift"键,然后在文件或文件夹上点击 鼠标击键,在弹出的菜单里面选择"复制为路径"命令,这样文件或文件夹的路径就可以复制到剪贴板了,接下来粘贴 到需要的地方就可以了.

向右键菜单中添加复制文件路径

复制文件路径本来可以按住shift 右击,不过还是有点麻烦,这里提供一种可以一次添加永久使用的方法. 打开记事本: Windows Registry Editor Version 5.00 ;文件[HKEY_CLASSES_ROOT\*\shell\copypath]@="复制文件路径" [HKEY_CLASSES_ROOT\*\shell\copypath\command]@="mshta vbscript:clipboarddata.setdata(\"text

python库文件路径

python中import语句导入库文件路径可通过sys.path查看.写一个简单的小程序: 1 import sys 2 print sys.path 运行它,本机上得到的结果如下: ['', '/usr/local/lib/python2.7/dist-packages/Paste-1.7.5.1-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/

如何指定GCC的默认头文件路径

如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631=============================================================================== 在交叉编译的时候我们需要用到其他的库,在config时候可以通过“-l”来指定目录,但是每次都需要设置的话难免有些麻烦,找到一个简单的方法.看下文的红色部分. 有大