Some pieces of Java

原创 2015年07月09日 20:07:05

@(Java基础相关)[ClassPath, 文件读取]

Java文件读取问题

当我们遇到读取项目文件的时候,经常遇到的是对文件路径问题的困扰。有很多完善的教程给出了范例,但是我们放到本地却经常报错,那么问题出在哪里?这里来从根源去解释一下:
首先,我们要知道我们编写的代码,是经过编译成类文件(.class)之后再调入JVM中执行的。所以,当我们说一个类的路径的时候,指的不是.java文件的路径,而是.class的路径。

我们有一个这样的示例项目,他的结构为:
这里写图片描述

先看Test类:
这里写图片描述
运行结果为:
这里写图片描述

下面一行一行来看:
注意到this.getClass().getResources("").toString();这里输出的当前类的路径。为:
这里写图片描述

首先看到,类的路径实在/bin目录下的,而不是在.java文件所在的/src目录。
然后还可以看到,因为package del.test这一句把test类打包到del.test包中。所以当前类所在的路径是在根路径的基础上再深入到del/test中

下面一行是:this.getClass().getResource("/").toString();
这里输出的是根目录的路径。为:
这里写图片描述

一定会奇怪为什么根目录在bin呢?在哪里指定了呢?如果你是用的是Eclipse,那么你会发现项目目录下有一个隐藏文件叫做.classpath,打开之,你会发现有这样的两行:

<classpathentry kind="src" path="src/com"/>
<classpathentry kind="output" path="bin"/>

这两行分别指定了kind=”src”,即源代码的根目录,为src/com。所以我们打包的时候会把src/com目录下的所有类进行编译。编译之后的.class文件就放在由kind=”output”指定的bin目录下。同时,会发现不可编译的配置文件.properties也被直接复制到这个目录下。

其实了解这些之后,第三行就很好理解了。读取文件,如果有/起头,则从根目录,即bin目录开始索引。如果没有/起头,则从当前类所在路径开始索引。

THE END

相关文章推荐

Just some pieces of general review on interfacing

So, It's pretty late here at the moment, but I really need to keep myself awake to finish my project...

some software of my for java delepement

  • 2011年12月22日 17:14
  • 51.6MB
  • 下载

110602 How Many Pieces of Land

// Max = 1 + C(n, 2) + C(n, 4) // Refer to http://en.wikipedia.org/wiki/Dividing_a_circle_into_area...

UVa Problem 10213 How Many Pieces of Land? (土地分割)

// How Many Pieces of Land? (土地分割) // PC/UVa IDs: 110602/10213, Popularity: B, Success rate: average...

UVa 10213 How Many Pieces of Land?

Problem G How Many Pieces of Land? Input: Standard Input Output: Standard Output Time Limit: 3 s...

How Many Pieces of Land题解

这道题首先要求土地可以分成多少部分的递推公式。现在给出过程: 对于一个封闭图形,每增加一条内部线段就意味将原来的土地分割成了两部分,即增加了一个部分。 现在假定n个点总共最多可以分成An份,然后包含在...

some of example about speech in matlab

  • 2011年11月10日 16:16
  • 23.43MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Some pieces of Java
举报原因:
原因补充:

(最多只允许输入30个字)