问题是这样的:
在一个web应用下,假设目录结构如下:
└─web_root
    ├─WEB-INF
    │  ├─tld
    │  ├─lib
    │  └─classes
    │      └─com
    │          ├─corporation
    │          └─util(要读文件的class放在这个目录下)
    ├─appmain
    ├─pub
    │  ├─js
    │  └─ccs
    └─myFile(被读的文件放在这个目录下)
我在util目录下放一个java程序,要读myFile目录下的一个文本文件,我怎么才能读到这个文件呢?
如何能做到不管我的web应用放在什么位置,都能读到这个文件呢?
请告诉给出思路和示例代码,谢谢!!

解决方案 »

  1.   

    File file2 = new File(request.getSession().getServletContext().getRealPath("") + "/WEB-INF/classes/com/util");
      

  2.   

    String fullname = "/myFile/" + 你的文件名InputStream is = new FileInputStream(fullname);主要是路径的问题,至于怎么读取文件就没什么好说的了。
      

  3.   

    对,主要是路径问题!
    to myth822:
    我读文件的程序是普通的java类,不是servlet,因此request等无法使用。
    to susu_0807:
    你个的方法没有解决路径问题,好像不行吧?
      

  4.   

    既然要读取就是和request相关的。你不会把它当作参数传进去吗?
      

  5.   

    既然是一个web应用,我想就一定能得到当前应用的所在目录,把当前应用所在目录作为参数传递过去应该不是什么难事吧?request.getSession().getServletContext().getRealPath("") ;
      

  6.   

    就是不知道你的类是什么样的。
    如果可能的话就把request作为构造函数的参数。
    如果是工具类可以作为某个静态方法的参数。
      

  7.   

    是这样的,如果没有request作为对象,那么只能通过你当前类的ClassLoader去CLASSPATH寻找文件。
    除了外部配置的CLASSPATH里面的jar,还有就是那个点代表的当前路径。
    点代表的当前路径就是你这个类所在的包的根目录,也就是classes目录,所有这里里面的目录结构都可以通过this.getClass().getResource("/xxx");来得到,“/”表示classes目录。你现在需要的路径是classes上层的了,所以不通过request得到web环境就不太可能找到那个文件了。
      

  8.   

    URL url="http://127.0.0.1:8080/webAppName/myFile/fileName";
    InputStream is = url.openStream();ip,应用名,目录可以从配置文件中获得主要是路径的问题,至于怎么读取文件就没什么好说的了。
      

  9.   

    String filePath = this.getClass().getResource("/com/util/ReadFile.class").getPath().toString();
    filePath = filePath.substring(0, filePath.indexOf("WEB-INF")-1);
    File file = new File(filePath+File.separator+"myfile");
    ....