1. 程式人生 > >URL的getFile()和getPath()方法的區別

URL的getFile()和getPath()方法的區別

import java.net.MalformedURLException;
import java.net.URL;


public class dd {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			URL url = new URL("file://ftp.yoyodyne.com/pub/files/foobar.txt?id=123456");
			System.out.println("url.getFile()="+url.getFile());
			System.out.println("url.getPath()="+url.getPath());
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}
}

返回的結果:

url.getFile()=/pub/files/foobar.txt?id=123456
url.getPath()=/pub/files/foobar.txt

當將上面的

file://ftp.yoyodyne.com/pub/files/foobar.txt?id=123456
改成
file://ftp.yoyodyne.com/pub/files/foobar.txt
時:

返回的結果:

url.getFile()=/pub/files/foobar.txt
url.getPath()=/pub/files/foobar.txt

java docs文件上說的:

The URL.getFile() javadocs say this:

Gets the file name of this URL. The returned file portion will be the same as getPath(), plus the concatenation of the value of getQuery(), if any. If there is no query portion, this method and getPath() will return identical results.

They will be the same unless there is a query string, e.g. a ?somename=value&somethingelse=value2

 in the URL.

我是一個新手之前一直不清楚是怎麼回事,現在明白了!