Java路径问题解决方案:[1]基础篇
解决JAVA开发中遇到的路径问题,从而快速的从事其他工作任务
工具/原料
JAVA JDK版本jdk1.7.0_51
Eclipse加部分应用插件
windows 7 操作系统
Java路径特殊字符
1、import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class URLTest { public static void main(String[] args) { String urlPath = URLTest.class.getResource("/").getPath(); System.out.println(urlPath); urlPath = URLTest.class.getResource("/").getFile(); System.out.println(urlPath); urlPath = URLTest.class.getClassLoader().getResource("").getPath(); System.out.println(urlPath); urlPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); System.out.println(urlPath); try { FileWriter writer = new FileWriter("D:/test.txt"); writer.write("success\n"); writer.flush(); writer.close(); FileReader read = new FileReader("D:/test.txt"); int i = 1; while((i = read.read())!=-1) { System.out.print((char)i); } read.close(); /**下面读写报错 **/ read = new FileReader(urlPath); writer = new FileWriter(urlPath); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}上述获取路径的方式不能被FileReader()和FileWriter()直接应用因为URL对空格、特殊字符(%,#,[]等)以及中文进行了编码处理;必须以"/"开头来获取路径:URLTest.class.getResource("/").getPath();不用加"/"可以来获取路径:URLTest.class.getClassLoader().getResource("").getPath();控制台输出如下图所示:
![Java路径问题解决方案:[1]基础篇](https://exp-picture.cdn.bcebos.com/d9e638334884cde3897a465af07f860e7d7542ee.jpg)
3、import java.net.MalformedURLException;import java.荏鱿胫协net.URI;import java.net.URISyntaxException;import java.net.URL;public class URLTest { public static void main(String[] args) { try { URL url = new URL("file://E:/test.txt"); System.out.println(url); URI uri = new URI("file://E:/test.txt"); System.out.println(uri); String uriPath = Thread.currentThread().getContextClassLoader() .getResource("").toURI().getPath(); System.out.println("以“空格”的形式显示" + uriPath); uriPath = Thread.currentThread().getContextClassLoader() .getResource("").toURI().toString(); System.out.println("以“%20”的形式显示" + uriPath); } catch (MalformedURLException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } }}new URL();的参数可以为正确的URI,或者为URI格式的字符串;若字符串是非完整的URI格式,则创建失败;java.net.URI以“%20”的形式显示Thread.currentThread().getContextClassLoader().getResource("").toURI().toString();以“空格”的形式显示Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath();java.net.URL返回的一切路径中的空格都是以“%20”的形式出现。URL/URI返回的路径分隔符都是“/”(控制台输出"/")控制台输出如下图所示:
![Java路径问题解决方案:[1]基础篇](https://exp-picture.cdn.bcebos.com/49c5d3e34b2c56eebf2996baf775e5f4fdf540ee.jpg)