虽然是很基础的东西,但是仍然愿意花时间写出来,我之前在实际项目中就遇到过这样的问题。
用之前我写过的一个例子来说明这个事情。
http://tangmingjie2009.iteye.com/blog/510459
假如你开发的程序有需要读一个自定义文件的功能,事实上这个情况很常见。你写来了如下类似代码。
String fileName = "config.properties"; String path =System.getProperty("user.dir")+File.separator+fileName; File f = new File(path); InputStream is =new FileInputStream(f); //... read
开发成功然后在eclipse上很开心。OK ,打个JAR包(testPath.jar)给用户用吧。
用户给安装到E://f1/f11/testPath.jar,没有问题。
启动吧
cd E://f1/f11/
java -jar testPath.jar
哇,没有问题,程序写的真好。
一段时间之后,用户发现每次都要CD进去多累呀,写个简单的批处理吧
java -jar E://f1/f11/testPath.jar
问题来了,突然某一天用户给你来个电话,出错了,
怎么读不到文件了呢?然后去目录一看文件在这边呀,代码他们不可能改的,文件也在原来的目录,怎么突然找不到读的文件了?各种纠结吧。
最后发现原来启动的方式有点不一样,CD一下,和不CD在外面直接读是有区别的。
下面直接把两种情况的输出复制出来如下,代码在上一个链接那里
//第一种情况,CD进去 E:\>cd f1\f11 E:\f1\f11>java -jar testPath.jar ---------test group 1--------- file:/E:/f1/f11/ file:/E:/f1/f11/ file:/E:/f1/f11/ file:/E:/f1/f11/ file:/E:/f1/f11/ ---------test group 2--------- jar:file:/E:/f1/f11/testPath.jar!/cn/tang/test/ ---------test group 3--------- E:\f1\f11 E:\f1\f11 //第一种情况,不CD进去,直接在外面运行 E:\f1\f11>cd .. E:\f1>cd .. E:\>java -jar ./f1/f11/testPath.jar ---------test group 1--------- file:/E:/f1/f11/ file:/E:/f1/f11/ file:/E:/f1/f11/ file:/E:/f1/f11/ file:/E:/f1/f11/ ---------test group 2--------- jar:file:/E:/f1/f11/testPath.jar!/cn/tang/test/ ---------test group 3--------- E:\ E:\
看看结果吧,你会明白的。
相关推荐
jacob.jar资源下载 “JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM...一般系统没有加载到Jacob.dll文件时,报错信息为:“java.lang.UnsatisfiedLinkError: no jacob in java.library.path”
三、读取文件 以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下: //读取Excel的类 import java.io.*; import jxl.*; public class ReadXLS { public static void main(String ...
注意在ftl文件里布尔值都是直接赋值 的如parse=true,而不是parse="true" 用例 /common/copyright.ftl 包含内容 Ftl代码 Copyright 2001-2002 ${me} All rights reserved. Copyright 2001-2002 ${me} ...
Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。 Servlet的初始化 Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化...
� Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的有限子集,尚不承诺遵守 Java 任何 Java 规范 , 可能会造 成J ava 阵营的进一步分裂。 � 现有应用完善度不太够,需要的开发工作量较大。--------------------...
比如说,我们想从 path/URL 提取文件名 – 下面的代码就是你需要: ereg("([^\\/]*)$", $pathOrUrl, $regs); echo $regs[1]; 高级的代换 ereg_replace() 和 eregi_replace()也是非常有用的: 假如我们想把所有...
三、读取文件 以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下: //读取Excel的类 import java.io.*; import jxl.*; public class ReadXLS { public static void main...
本文选用的数据库为Oracle 9i,当然你可以在不改动代码的情况下,通过配置文件的调整将其移植到任何具有Blob字段类型的数据库上,如MySQL,SQLServer等。 总体实现 上传文件保存到T_FILE表中,T_FILE表结构...
Java 归档文件,其中包含构建应用程序所需的所有的 Android SDK 类。 documention.html 和 docs 目录 本地和网上提供的 SDK 文档。这些文档的主要形式为 JavaDocs,以便于在 SDK 中导航大量的包。文档还包括一个高级...
JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: <#if condition>... <#elseif condition>... <#elseif condition>......
在上面这段代码中,重点注意三条命令的使用方法: assembly = Assembly.LoadFile(rootPath + prop.assemblyName); p = assembly.CreateInstance(prop.typeName); t.InvokeMember(prop.propertyName, BindingFlags....
通过提示及配置文件等来控制执行计划; 在程序中优化查询而无需改动代码。 作为Oracle SQL经典著作之一,本书为SQL开发人员指明了前行的方向,赋予了他们不断开拓的动力。 作者简介 KAREN MORTON 研究...
// String filename = path.substring(path.lastIndexOf('/')+1); String filename = "2.txt"; os = new PrintWriter(filename); while (sc.hasNext()) { os.write(sc.nextLine()); } } catch ...