日期:2014-05-20  浏览次数:20747 次

Java 打包 成jar 文件后运行程序生成一个txt文件,但它不在jar文件中,而是和jar文件在同一级目录下
这是将数据写入文件的代码
public boolean writeIPFile(String ipString) {
  

  try {
   
  File file = new File("IP.txt");
  FileWriter fw = new FileWriter(file);
  fw.write(ipString);
  fw.flush();
  return true;

  } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  return false;
  }
 }
如果在MyEclipse下的工程里运行,它会在当前工程的目录下生成IP.txt.
可是当我把这个工程打包成jar文件后,它生成的IP.txt文件没有在jar文件中,而是在jar文件所在的同级目录下。比如jar文件在C盘,那么IP.txt文件就在C盘。
我知道,产生这个问题的原因是路径的问题,即在MyEclipse的开发环境里,是以项目目录为根目录的,但脱离IDE后直接运行一堆class文件,则class文件所在目录是根目录,但如果运行打包后的jar文件,则jar文件所在的目录是根目录。所以IP.txt文件才会生成在jar文件的同级目录下。我试着在JDK里寻找能找到jar文件路径的方法,可是没能找到。

现在我想让自动生成的IP.txt文件直接放在可执行的jar文件中,希望高手能帮帮忙。
如果有可能,有时间希望大虾们能给我介绍一下,Java中,文件路径的问题。

------解决方案--------------------
1、我试着在JDK里寻找能找到jar文件路径的方法,可是没能找到。
System.out.println(System.getProperty("user.dir")); //可以获得你当前jar文件所在的路径
2、现在我想让自动生成的IP.txt文件直接放在可执行的jar文件中
没试过,你不至于想把jar包解开,然后生成,然后再生成jar包吧~~~~

为什么要放在jar里生成呢??
------解决方案--------------------
jar是经过压缩的,里面的文件是只读的,IP.txt只能读取,不能写入。因此必须放在外面。
File file = new File(System.getProperty("user.dir"),"IP.txt");