虽然是很基础的东西,但是仍然愿意花时间写出来,我之前在实际项目中就遇到过这样的问题。
用之前我写过的一个例子来说明这个事情。
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:\
看看结果吧,你会明白的。
相关推荐
### Java读取Excel文件知识点详解 #### 一、引言 在日常开发工作中,经常需要处理Excel文件。Java作为一种广泛使用的编程语言,提供了多种库来读取Excel文件,其中较为常用的有Apache POI和JExcelApi等。本文将详细...
以下是如何使用`Files`和`Path`读取文件: ```java import java.io.IOException; import java.nio.file.*; public class ReadTextFile { public static void main(String[] args) { Path filePath = Paths.get(...
请注意,PDF文件可能包含加密或权限限制,所以在读取之前需要检查并处理这些情况。此外,PDFBox也支持更复杂的操作,如提取特定页面、选择区域、处理表格和图像等。根据具体需求,可以深入学习PDFBox的API来实现更多...
- 使用`BufferedReader`和`InputStreamReader`组合,可以指定字符编码读取文件。例如: ```java FileInputStream fis = new FileInputStream("path_to_file.csv"); InputStreamReader isr = new ...
【标签】:“java解析DWG文件json java读取dwg文件” 本文将详细介绍如何使用Java和SuperMap iObjects Java库解析DWG文件并将其转换为JSON格式。SuperMap iObjects Java是一款强大的GIS(地理信息系统)开发工具,...
然后,我们使用`readLine()`方法逐行读取文件内容,并打印出来。注意使用try-with-resources语句,这样可以确保在读取完成后自动关闭流。 接下来,我们讨论如何读取XML文件。Java提供了`javax.xml.parsers`包,包含...
请注意,如果二进制文件包含非ASCII字符,转换可能会导致乱码或不可读的文本。 在实际应用中,如果二进制文件确实包含非ASCII文本(如UTF-8编码的多语言文本),那么需要更复杂的处理,例如使用`CharsetDecoder`类...
- 使用`BufferedReader`的`readLine()`方法,逐行读取文件内容。这可以用来获取HTML文件的文本。 2. **处理HTML内容** - HTML内容通常包含标签和文本,如果只需要文本内容,可以使用`Jsoup`库解析HTML。`Jsoup`是...
在Java编程中,读取文件时可能会遇到乱码问题,这通常是由于文件编码格式与程序期望的编码格式不一致导致的。本篇文章将深入探讨如何在Java中正确地读取不同编码格式的文件,以避免乱码现象。 首先,我们需要了解...
在Java编程中,读取Excel文件并生成矩阵是一项常见的任务,尤其在数据分析、报表处理或者数据导入导出的场景下。Excel文件通常用于存储结构化的表格数据,而矩阵则是一种有效的数据表示方式,便于计算和分析。下面...
总结起来,Java的`InputStream`和`FileReader`分别用于处理二进制数据和文本数据的读取,而`InputStreamReader`允许你在读取文件时指定字符编码。在用户界面中选择文件时,尽管`FileDialog`在早期版本中被使用,但...
首先,Java提供了多种类用于处理文件输入输出,其中`java.io`包中的`FileInputStream`和`FileReader`是基础类,用于读取文件内容。然而,对于随机访问文件,我们通常会使用`RandomAccessFile`类,它提供了随机访问和...
在这个例子中,我们创建了一个`BufferedReader`实例来读取文件,并通过`readLine()`方法逐行读取文件内容。每读取一行,就计算其长度并将结果累加到`count`变量中。注意,这个计数不包括换行符,如果需要包含换行符...
### JAVA读取环境变量 #### 知识点概述 在Java程序中,有时我们需要根据不同的运行环境(如Windows或Linux)来获取系统环境变量。这些环境变量包含了操作系统配置的重要信息,比如路径设置、用户信息等。本文将...
下面将详细介绍如何在Java中读取jar包文件。 1. **使用`JarFile`类** `JarFile`是Java中用于操作jar文件的主要类。首先,你需要创建一个`JarFile`实例,传入jar文件的路径(如果jar文件在类路径中,可以使用类的全...
### 如何用Java程序设置系统Path环境变量 随着Java技术的发展与普及,越来越多的开发者开始在Windows平台上利用Java进行桌面应用程序开发。在此过程中,经常会出现需要通过JNI(Java Native Interface,Java本地...
在Java编程中,将多个文件压缩成一个ZIP文件并实现下载是一个常见的任务,尤其是在处理大量数据或文件分发时。这个过程涉及到Java的I/O流、压缩和HTTP响应的使用。下面将详细介绍如何实现这个功能。 首先,我们需要...
下面将详细介绍如何使用Java读取ZIP文件,并提供相关的知识点。 首先,我们需要了解`ZipInputStream`类,它是Java中用于读取ZIP文件的主要工具。这个类实现了`InputStream`接口,允许我们逐个读取ZIP文件中的条目...