`
tmj_159
  • 浏览: 700679 次
  • 性别: Icon_minigender_1
  • 来自: 永州
社区版块
存档分类
最新评论

java 读文件Path注意下面情况

 
阅读更多

虽然是很基础的东西,但是仍然愿意花时间写出来,我之前在实际项目中就遇到过这样的问题。

用之前我写过的一个例子来说明这个事情。

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.jar资源下载 “JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM...一般系统没有加载到Jacob.dll文件时,报错信息为:“java.lang.UnsatisfiedLinkError: no jacob in java.library.path”

    通过java操作excel表格的工具类库jxl

     三、读取文件  以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:  //读取Excel的类  import java.io.*;  import jxl.*;  public class ReadXLS  {  public static void main(String ...

    freemarker语法完整版

    注意在ftl文件里布尔值都是直接赋值 的如parse=true,而不是parse="true" 用例 /common/copyright.ftl 包含内容 Ftl代码 Copyright 2001-2002 ${me} All rights reserved. Copyright 2001-2002 ${me} ...

    java-servlet-api.doc

    Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。 Servlet的初始化 Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化...

    新版Android开发教程.rar

    � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的有限子集,尚不承诺遵守 Java 任何 Java 规范 , 可能会造 成J ava 阵营的进一步分裂。 � 现有应用完善度不太够,需要的开发工作量较大。--------------------...

    Java-PHP-C#

    比如说,我们想从 path/URL 提取文件名 – 下面的代码就是你需要: ereg("([^\\/]*)$", $pathOrUrl, $regs); echo $regs[1]; 高级的代换 ereg_replace() 和 eregi_replace()也是非常有用的: 假如我们想把所有...

    Excel数据操纵-jar包-jxl.jar

     三、读取文件  以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:  //读取Excel的类  import java.io.*;  import jxl.*;  public class ReadXLS  {  public static void main...

    ssh(structs,spring,hibernate)框架中的上传下载

     本文选用的数据库为Oracle 9i,当然你可以在不改动代码的情况下,通过配置文件的调整将其移植到任何具有Blob字段类型的数据库上,如MySQL,SQLServer等。  总体实现  上传文件保存到T_FILE表中,T_FILE表结构...

    Google Android SDK开发范例大全(完整版)

    Java 归档文件,其中包含构建应用程序所需的所有的 Android SDK 类。 documention.html 和 docs 目录 本地和网上提供的 SDK 文档。这些文档的主要形式为 JavaDocs,以便于在 SDK 中导航大量的包。文档还包括一个高级...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: <#if condition>... <#elseif condition>... <#elseif condition>......

    Spring.net框架

    在上面这段代码中,重点注意三条命令的使用方法: assembly = Assembly.LoadFile(rootPath + prop.assemblyName); p = assembly.CreateInstance(prop.typeName); t.InvokeMember(prop.propertyName, BindingFlags....

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

     通过提示及配置文件等来控制执行计划;  在程序中优化查询而无需改动代码。  作为Oracle SQL经典著作之一,本书为SQL开发人员指明了前行的方向,赋予了他们不断开拓的动力。 作者简介  KAREN MORTON 研究...

    HttpClient以及获取页面内容应用

    // String filename = path.substring(path.lastIndexOf('/')+1); String filename = "2.txt"; os = new PrintWriter(filename); while (sc.hasNext()) { os.write(sc.nextLine()); } } catch ...

Global site tag (gtag.js) - Google Analytics