1.這些符號在不同的系統下意義不同:
//雙斜線:協議和主機名之間的分隔符 (比如http://localhost:8080)
/單斜線:windows里或者WEB上或者Unix內核的目錄架構分隔符
\反斜線:windows 里的目錄結構的分隔符, 正斜線也可。
\\雙反斜線 :在windows里表示絕對地址的第一項,比如后面跟上IP地址的話,就是需要打開這個IP地址的網絡共享資源。
2.關於目錄間的間隔符用正斜線(/)或則反斜線(\)的問題。
1)在UNIX環境下,目錄中的間隔符是正斜線/。
2)在Windows平台上,目錄中的間隔符用正斜線/和反斜線\都可以。
3)在java程序里,目錄中的間隔符可以是正斜線/。反斜線\表示轉義字符,所以如果需要在Java程序里用到Windows平台上的反斜線\作為目錄間隔符,必須是雙反斜線\\。
即:目錄間隔符要么是斜線/,要么是雙反斜線\\。
3.分析反斜線\\
變化比較多的是反斜線,反斜線在C里面(以及大部分編程語言)屬於轉義符,也就是其后的字符將有不同意義,比如\n表示回車,再比如
在perl里面$x表示一個變量,而\$x就不是變量了。至於\\就是將后面的\轉義了,此時后面的\就不是轉義符了,
而是\字符本身,例如:
printf("\\n");
打印出來的就是\n,而不是一個回車。
你只要記住\會將后面的字符轉義即可,,比如
printf("\\\");
結果是編譯錯誤,因為前面的兩個\\是\字符本身,第三個\會去轉義后面的",這樣就會缺少一個引號,造成編譯錯誤。
\轉義引號的地方很多,主要是要在字符串里包含引號,比如:
printf("hello \"world\"\n");
例子:現在在servlet程序中想獲取一個test.doc文件(在當前WEB應用的根目錄下/WEB-INF/files文件夾里)的輸出流:
當然了,這里也可以是
要么是
打印fileName,可得E:\apache-tomcat-8.0.37\webapps\20161028-FileUpLoad\WEB-INF\files\test.doc。
然后向outputStream里write,進入E:\apache-tomcat-8.0.37\webapps\20161028-FileUpLoad\WEB-INF\files目錄,會看到確實多了一個文件:test.doc。
同時,這也意味着:通過getRealPath獲取當前WEB應用的某一個文件在服務器上的絕對路徑(部署后的路徑,而不是部署前的路徑)。