??xml version="1.0" encoding="utf-8" standalone="yes"?>
1. Path的概?/strong>
文gpȝ会把文gq行l织q存攑֜媒介上,通常是一个或多个盘上。目前用的大多数的文gpȝ是以树Ş的方式来存储文g的。在树的端是一个(或多个)
根节点,在根节点之下是文件和目录Q目录下又可以包含文件和目录。理Z可以q样一层层的一直嵌套下去(当然实际中是不可能的Q例如Windowspȝ?
路径的长度有限制Q?br />
下面的图中展CZ一个包含一个根节点的目录树。(在Windowspȝ中支持多个根节点Q例如C:\和D:\分别是一个根节点。)
Path能够唯一的标识文件系l中的某一个文件。例如上面图中的statusReport文g在Windowspȝ中就可以使用以下的Path来标识:
c:\home\sally\statusReport
在solarispȝ中,其path?br />
/home/sally/statusReport.
Path中的分隔W在不同的文件系l中是不同的Q例如在Windowspȝ中用\Q在Solarispȝ中??br />
Path又可以分为绝对\径和相对路径。绝对\径L含有根节点和用来定位文g的完整的目录列表。例?home/sally/statusReport
是l对路径。相对\径需要和另外的\径结合在一h能够定一个文件。例如加哦加哦哦joe/foo是一个相对\径,如果没有其他的信息,E序没?
办法定位q个文g。我们必说q个是相?home的相对\径,q样我们才能够找到它?br />
除了我们熟悉的目录和文g之外Q有一些文件系l中q支持符号链接(symbolic link),也称为symlink或soft
link。一个符号链接是一个特D的文gQ它实际上是另外一个链接的引用。在大多数情况下W号链接对应用程序是透明的,对符号链接的操作会自动的重定向到
链接所指向的目的地Q除非操作是删除q个W号链接、重命名q个W号链接或修改符号链接的目的地?br />
在下面的图中QlogFile对于用户来说是一个常规的文gQ但是实际上是一个符号链接,链接到dir/logs/HomeLogFile文g?
HomeLogFile是这个链接的目的地?br />
不恰当的使用W号链接会导致@环引用,例如目录A是一个符号链接,指向目录BQ目录B下有一个子目录是符号链接,指向目录A的父目录。这P当程序企N?
归的遍历整个目录树时Q就会出问题。幸q的是,q个问题已经被发CQƈ且不会导致程序的d@环?br />
2.Pathc?/strong>
PathcLJDK7新引入的一个类Q该cLjava.io.file包的基石?br />
和类的名U所展示的一PPathcd是文件系l中path概念的程序表现。Path对象包含了文件名和目录列表,q些信息可以用来创徏pathQƈ且用
来检验、定位和操作文g?br />
Path实例是和底层操作pȝ相关的。在Solarispȝ中,Path使用Solaris的句?/home/joe/foo)Q在Window操作p?
l中QPath会用Window的句?C:\home\joe\foo)。因此Path不是操作pȝ无关的。你不能够比较一个来自Solaris文g
pȝ的Path和一个来自Windows文gpȝ的Pathq期望它们相{,在目录结构和文g完全一L时候也不行?br />
Path对应的文件或者目录可以不存在。我们可以以不同的方式创建Path实例q操作它Q扩展\径、抽取\径的一部分、和其他的Path比较。我们也可以
查Path对应的目录或文g是否存在?span onclick="tagshow(event)" class="t_tag">创徏文g或目录、打开或删除文件、修改许可权限等?br />
PathcL能够区分W号链接的。所有的Path的方法要么会是否是W号链接q执行不同的操作Q或者提供了一个选择来用户能够配置当遇到符号链接的
时候执行什么操作?br />
PathcL供了很多易于使用的特性,PathcȝҎ可以分成两类Q?br />
在下一文章中Q我们会具体介绍Pathcȝq些Ҏ?
]]>
在?/SPAN>JDBC来查询数据库的时候,通常的步骤是Q?/SPAN>
1Q?SPAN style="FONT: 7pt 'Times New Roman'"> 注册驱动E序
2Q?SPAN style="FONT: 7pt 'Times New Roman'"> 获取数据库连?/SPAN>
3Q?SPAN style="FONT: 7pt 'Times New Roman'"> 执行查询语句
4Q?SPAN style="FONT: 7pt 'Times New Roman'"> 关闭q接?/SPAN>
在获得数据库q接后,可以通过getMetaDataQ)Ҏ来获?/SPAN>DatabaseMetaData;然后通过DatabaseMetaData?/SPAN>getPrimaryKeys ()Ҏ来获取主键的信息?/SPAN>
下面是我做的CZE序Q该E序?/SPAN>JBuilder2005Q?/SPAN>oracle8i下通过Q?/SPAN>
import java.sql.*;
import javax.sql.*;
public class TestJDBC {
public TestJDBC() {
}
public static void main(String[] args) throws SQLException {
Connection con = null;
Statement st = null;
ResultSet rst = null;
try{
//注册数据库驱动程?/SPAN>
Class.forName("oracle.jdbc.driver.OracleDriver");
//获取数据库连?/SPAN>
con = DriverManager.getConnection("jdbc:oracle:thin:@10.60.203.80:1521:TestDB","123","123");
//获取主键信息
rst = con.getMetaData().getPrimaryKeys(null,null,"USER");
//打印主键信息
if (!rst.isAfterLast()) {
rst.next();
System.out.println(rst.getString("TABLE_NAME") + " " +
rst.getString("COLUMN_NAME"));
}
}
catch (Exception e){
System.out.println(e.getLocalizedMessage());
}
finally{
try{
//关闭q接
if (rst != null)
rst.close();
if (con != null)
con.close();
}
catch (SQLException e){
throw e;
}
}
}
}
上面的程序中,在获取主键信息的时?/SPAN>,语句
rst = con.getMetaData().getPrimaryKeys(null,null,"USER");
用来获取主键信息。关于该函数的详l信息,请参?/SPAN>JDK的文档。这里要说的是,在测试中发现W三个参敎ͼ数据库表名)是大写敏感的,如果写成user是查不到l果的?/SPAN>
Field[] fields = test.getClass().getDeclaredFields();
try
{
for (int i=0;i
if (fields[i].getType().equals(java.lang.String.class)){
fields[i].setAccessible(true);
fields[i].set(test, "This field have been changed!");
}
}
}
catch (Exception e)
{
}
test.myPrint();
}
}
q行l果是什么呢Q是
Begin to test change.
This is ClassA
This field have been changed!
也就是说Q在TestChangeAppcMQ可以修改ClassA的私有成员变量?/P>