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

Operating Systems: Three Easy Pieces(操作系统:三个简单方面)4.3进程创建的更多细节

4.3进程创建:更多的细节 首先我们要揭秘的是,程序是怎样转换为进程的。尤其是,操作系统怎么得到一个程序并将之运行?进程创建实际上是怎么作用的? 操作系统想要允许程序时,最先要做的事情就是将程序的代码...
  • u010970209
  • u010970209
  • 2016年03月17日 15:13
  • 2039

Operating Systems: Three Easy Pieces(操作系统:三个简单方面)4.5数据结构4.6总结

4.5 数据结构 操作系统就是一个程序,和其他任何程序一样,他也有一些很重要的数据结构用来跟踪各种各样的重要信息片段。要跟踪每个进程的状态,比如,操作系统让所有的就绪态进程放在一个进程表里面,同时,...
  • u010970209
  • u010970209
  • 2016年03月21日 14:44
  • 1745

Operating Systems: Three Easy Pieces阅读笔记(五)LFS

Log-structureed File System1.buffer all updates in a memory segment 2.write to free block locations...
  • yeqm_
  • yeqm_
  • 2016年03月03日 19:34
  • 651

operating system:three easy pieces

[Operating Systems: Three Easy Pieces] (http://pages.cs.wisc.edu/~remzi/OSTEP/)Virtualization4:The a...
  • u010235142
  • u010235142
  • 2016年11月11日 22:44
  • 1365

操作系统三个简单的部分(Operating Systems in Three Easy Pieces)4.1

4.1抽象化:进程 操作系统对一个正在运行的程序的抽象化,我们称之为进程。根据我们前面所说,一个进程简单说来就是一个运行中的程序;我们可以通过盘点程序在运行中的任意时刻对操作系统的不同部分的访问和造成...
  • u010970209
  • u010970209
  • 2016年03月13日 21:14
  • 1647

(计算几何8.1.3.1)UVA 10213 How Many Pieces of Land?(使用欧拉公式的应用顶点数+面数-棱数 = 2)

import java.math.BigInteger; import java.util.Scanner; public class UVA_10213 { public static vo...
  • caihongshijie6
  • caihongshijie6
  • 2013年11月17日 09:16
  • 1691

java pieces,

What is the difference between == vs equals() in Java?, Always remember to override hashCode if you ...
  • qeatzy
  • qeatzy
  • 2016年05月17日 22:32
  • 443

How Many Pieces of Land题解

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

操作系统三个简单的部分(Operating Systems in Three Easy Pieces闲来无聊,翻译的)虚拟化部分-原文编号3对话

2-1关于虚拟化的讨论 教授:到这里,我们到了《操作系统三部分》的第一个部分:虚拟化。 学生:哦?那么尊敬的教授,请问什么是虚拟化? 教授:想象一下我们有一个桃子。 学生:一个桃子?(难以置信) 教...
  • u010970209
  • u010970209
  • 2016年03月09日 13:17
  • 1013

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...
  • u012926782
  • u012926782
  • 2013年12月11日 19:55
  • 542
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Some pieces of Java
举报原因:
原因补充:

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