java获得项目绝对路径
???????try {
?????????if (file.createNewFile()) {
?????????//???System.out.println("Succeeded!");
?????????}
?????????else {
?????????//???System.err.println("Create file failed!");
?????????}
???????}
???????catch (IOException e) {
???????//???System.err.println("Create file failed!");
?????????e.printStackTrace();
???????}
?????}
?????boolean result = file.setLastModified(currentTime);
?????if (!result) {
?????//???System.err.println("touch failed: " + file.getName());
?????}
???}
??
???public static void touch(String fileName) {
?????File file = new File(fileName);
?????touch(file);
???}
??
???public static void touch(File[] files) {
?????for (int i = 0; i < files.length; i++) {
???????touch(files);
?????}
???}
??
???public static void touch(String[] fileNames) {
?????File[] files = new File[fileNames.length];
?????for (int i = 0; i < fileNames.length; i++) {
???????files = new File(fileNames);
?????}
?????touch(files);
???}
??
???public static boolean isFileExist(String fileName) {
?????return new File(fileName).isFile();
???}
??
???public static boolean makeDirectory(File file) {
?????File parent = file.getParentFile();
?????if (parent != null) {
???????return parent.mkdirs();
?????}
?????return false;
???}
??
???public static boolean makeDirectory(String fileName) {
?????File file = new File(fileName);
?????return makeDirectory(file);
???}
??
???public static boolean emptyDirectory(File directory) {
?????boolean result = false;
?????File[] entries = directory.listFiles();
?????for (int i = 0; i < entries.length; i++) {
???????if (!entries.delete()) {
?????????result = false;
???????}
?????}
?????return true;
???}
??
???public static boolean emptyDirectory(String directoryName) {
?????File dir = new File(directoryName);
?????return emptyDirectory(dir);
???}
??
???public static boolean deleteDirectory(String dirName) {
?????return deleteDirectory(new File(dirName));
???}
??
???public static boolean deleteDirectory(File dir) {
?????if ( (dir == null) || !dir.isDirectory()) {
???????throw new IllegalArgumentException("Argument " + dir +
??????????????????????????????????????????" is not a directory. ");
?????}
?????File[] entries = dir.listFiles();
?????int sz = entries.length;
?????for (int i = 0; i < sz; i++) {
???????if (entries.isDirectory()) {
?????????if (!deleteDirectory(entries)) {
???????????return false;
?????????}
???????}
???????else {
?????????if (!entries.delete()) {
???????????return false;
?????????}
???????}
?????}
?????if (!dir.delete()) {
???????return false;
?????}
?????return true;
???}
??
???public static URL getURL(File file) throws MalformedURLException {
?????String fileURL = "file:/" + file.getAbsolutePath();
?????URL url = new URL(fileURL);
?????return url;
???}
??
???public static String getFileName(String filePath) {
?????File file = new File(filePath);
?????return file.getName();
???}
??
???public static String getFilePath(String fileName) {
?????File file = new File(fileName);
?????return file.getAbsolutePath();
???}
??
???public static String toUNIXpath(String filePath) {
?????return filePath.replace('\\', '/');
???}
??
???public static String getUNIXfilePath(String fileName) {
?????File file = new File(fileName);
?????return toUNIXpath(file.getAbsolutePath());
???}
??
???public static String getTypePart(String fileName) {
?????int point = fileName.lastIndexOf('.');
?????int length = fileName.length();
?????if (point == -1 || point == length - 1) {
???????return "";
?????}
?????else {
???????return fileName.substring(point + 1, length);
?????}
???}
??
???public static String getFileType(File file) {
?????return getTypePart(file.getName());
???}
??
???public static String getNamePart(String fileName) {
?????int point = getPathLsatIndex(fileName);
?????int length = fileName.length();
?????if (point == -1) {
???????return fileName;
?????}
?????else if (point == length - 1) {
???????int secondPoint = getPathLsatIndex(fileName, point - 1);
???????if (secondPoint == -1) {
?????????if (length == 1) {
???????????return fileName;
?????????}
?????????else {
???????????return fileName.substring(0, point);
?????????}
???????}
???????else {
?????????return fileName.substring(secondPoint + 1, point);
???????}
?????}
?????else {
???????return fileName.substring(point + 1);
?????}
???}
??
???public static String getPathPart(String fileName) {
?????int point = getPathLsatIndex(fileName);
?????int length = fileName.length();
?????if (point == -1) {
???????return "";
?????}
?????else if (point == length - 1) {
???????int secondPoint = getPathLsatIndex(fileName, point - 1);
???????if (secondPoint == -1) {
?????????return "";
???????}
???????else {
?????????return fileName.substring(0, secondPoint);
???????}
?????}
?????else {
???????return fileName.substring(0, point);
?????}
???}
??
???public static int getPathIndex(String fileName) {
?????int point = fileName.indexOf('/');
?????if (point == -1) {
???????point = fileName.indexOf('\\');
?????}
?????return point;
???}
??
???public static int getPathIndex(String fileName, int fromIndex) {
?????int point = fileName.indexOf('/', fromIndex);
?????if (point == -1) {
???????point = fileName.indexOf('\\', fromIndex);
?????}
?????return point;
???}
??
???public static int getPathLsatIndex(String fileName) {
?????int point = fileName.lastIndexOf('/');
?????if (point == -1) {
???????point = fileName.lastIndexOf('\\');
?????}
?????return point;
???}
??
???public static int getPathLsatIndex(String fileName, int fromIndex) {
?????int point = fileName.lastIndexOf('/', fromIndex);
?????if (point == -1) {
???????point = fileName.lastIndexOf('\\', fromIndex);
?????}
?????return point;
???}
??
???public static String trimType(String filename) {
?????int index = filename.lastIndexOf(".");
?????if (index != -1) {
???????return filename.substring(0, index);
?????}
?????else {
???????return filename;
?????}
???}
??
???public static String getSubpath(String pathName,String fileName) {
?????int index = fileName.indexOf(pathName);
?????if (index != -1) {
???????return fileName.substring(index + pathName.length() + 1);
?????}
?????else {
???????return fileName;
?????}
???}
}
4.遗留问题
目前new FileInputStream()只会使用绝对路径,相对没用过,因为要相对于web服务器地址,比较麻烦
还不如写个配置文件来的快哪
5.按Java文件类型分类读取配置文件
配 置文件是应用系统中不可缺少的,可以增加程序的灵活性。java.util.Properties是从jdk1.2就有的类,一直到现在都支持load ()方法,jdk1.4以后save(output,string) ->store(output,string)。如果只是单纯的读,根本不存在烦恼的问题。web层可以通过 Thread.currentThread().getContextClassLoader().
getResourceAsStream("xx.properties") 获取;Application可以通过new FileInputStream("xx.properties");直接在classes一级获取。关键是有时我们需要通过web修改配置文件,我们不 能将路径写死了。经过测试觉得有以下心得:
1.servlet中读写。如果运用Struts 或者Servlet可以直接在初始化参数中配置,调用时根据servletcontext的getRealPath("/")获取真实路径,再根据 String file = this.servlet.getInitParameter("abc");获取相对的WEB-INF的相对路径。
例:
InputStream input = Thread.currentThread().getContextClassLoader().
getResourceAsStream("abc.properties");
Properties prop = new Properties();
prop.load(input);
input.close();
OutputStream out = new FileOutputStream(path);
prop.setProperty("abc", “test");
prop.store(out, “test");
out.close();
2.直接在jsp中操作,通过jsp内置对象获取可操作的绝对地址。
例:
// jsp页面
String path = pageContext.getServletContext().getRealPath("/");
String realPath = path+"/WEB-INF/classes/abc.properties";
//java 程序
InputStream in = getClass().getClassLoader().getResourceAsStream("abc.properties"); // abc.properties放在webroot/WEB-INF/classes/目录下
prop.load(in);
in.close();
OutputStream out = new FileOutputStream(path); // path为通过页面传入的路径
prop.setProperty("abc", “abcccccc");
prop.store(out, “test");
out.close();
3.只通过Java程序操作资源文件
InputStream in = new FileInputStream("abc.properties"); // 放在classes同级
OutputStream out = new FileOutputStream("abc.properties");
=======================================