Class.getResource和ClassLoader.getResource的區別分析
在Java中獲取資源的時候,經常用到Class.getResource和ClassLoader.getResource,本文給大家說一下這兩者方法在獲取資源文件的路徑差異。
Class.getResource(String path)
path不以"/"開頭時,默認是從此類所在的包下取資源;path以"/"開頭時,則是從項目的ClassPath根下獲取資源。在這裡"/"表示ClassPath
JDK設置這樣的規則,是很好理解的,path不以"/"開頭時,我們就能獲取與當前類所在的路徑相同的資源文件,而以"/"開頭時可以獲取ClassPath根下任意路徑的資源。
如下所示的例子:
<div id="crayon-5bfa0a9abb827628055974" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" stylex="margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important; height: auto;">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main" stylex="position: relative; z-index: 1; overflow: hidden;">
<table class="crayon-table" stylex="">
<tbody><tr class="crayon-row">
<td class="crayon-nums " data-settings="show">
<div class="crayon-nums-content" stylex="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="crayon-5bfa0a9abb827628055974-1">1</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb827628055974-2">2</div><div class="crayon-num" data-line="crayon-5bfa0a9abb827628055974-3">3</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb827628055974-4">4</div><div class="crayon-num" data-line="crayon-5bfa0a9abb827628055974-5">5</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb827628055974-6">6</div><div class="crayon-num" data-line="crayon-5bfa0a9abb827628055974-7">7</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb827628055974-8">8</div></div>
</td>
<td class="crayon-code"><div class="crayon-pre" stylex="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="crayon-5bfa0a9abb827628055974-1"><span class="crayon-m">public</span><span class="crayon-h"> </span><span class="crayon-t">class</span><span class="crayon-h"> </span><span class="crayon-e">Test</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb827628055974-2"><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb827628055974-3"><span class="crayon-h"> </span><span class="crayon-m">public</span><span class="crayon-h"> </span><span class="crayon-m">static</span><span class="crayon-h"> </span><span class="crayon-t">void</span><span class="crayon-h"> </span><span class="crayon-e">main</span><span class="crayon-sy">(</span><span class="crayon-t">String</span><span class="crayon-sy">[</span><span class="crayon-sy">]</span><span class="crayon-h"> </span><span class="crayon-v">args</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb827628055974-4"><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb827628055974-5"><span class="crayon-h"> </span><span class="crayon-v">System</span><span class="crayon-sy">.</span><span class="crayon-v">out</span><span class="crayon-sy">.</span><span class="crayon-e">println</span><span class="crayon-sy">(</span><span class="crayon-v">Test</span><span class="crayon-sy">.</span><span class="crayon-t">class</span><span class="crayon-sy">.</span><span class="crayon-e">getResource</span><span class="crayon-sy">(</span><span class="crayon-s">""</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb827628055974-6"><span class="crayon-h"> </span><span class="crayon-v">System</span><span class="crayon-sy">.</span><span class="crayon-v">out</span><span class="crayon-sy">.</span><span class="crayon-e">println</span><span class="crayon-sy">(</span><span class="crayon-v">Test</span><span class="crayon-sy">.</span><span class="crayon-t">class</span><span class="crayon-sy">.</span><span class="crayon-e">getResource</span><span class="crayon-sy">(</span><span class="crayon-s">"/"</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-5bfa0a9abb827628055974-7"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb827628055974-8"><span class="crayon-sy">}</span></div></div></td>
</tr>
</tbody></table>
</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
運行結果為:
file:/D:/work_space/java/bin/net/swiftlet/
file:/D:/work_space/java/bin/
Class.getClassLoader().getResource(String path)
path不能以"/"開頭時,path是指類載入器的載入範圍,在資源載入的過程中,使用的逐級向上委託的形式載入的,"/"表示Boot ClassLoader中的載入範圍,因為這個類載入器是C++實現的,所以載入範圍為null。如下所示:
<div id="crayon-5bfa0a9abb83d556277988" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" stylex="margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important; height: auto;">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main" stylex="position: relative; z-index: 1; overflow: hidden;">
<table class="crayon-table" stylex="">
<tbody><tr class="crayon-row">
<td class="crayon-nums " data-settings="show">
<div class="crayon-nums-content" stylex="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="crayon-5bfa0a9abb83d556277988-1">1</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb83d556277988-2">2</div><div class="crayon-num" data-line="crayon-5bfa0a9abb83d556277988-3">3</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb83d556277988-4">4</div><div class="crayon-num" data-line="crayon-5bfa0a9abb83d556277988-5">5</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb83d556277988-6">6</div><div class="crayon-num" data-line="crayon-5bfa0a9abb83d556277988-7">7</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb83d556277988-8">8</div></div>
</td>
<td class="crayon-code"><div class="crayon-pre" stylex="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="crayon-5bfa0a9abb83d556277988-1"><span class="crayon-m">public</span><span class="crayon-h"> </span><span class="crayon-t">class</span><span class="crayon-h"> </span><span class="crayon-e">Test</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb83d556277988-2"><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb83d556277988-3"><span class="crayon-h"> </span><span class="crayon-m">public</span><span class="crayon-h"> </span><span class="crayon-m">static</span><span class="crayon-h"> </span><span class="crayon-t">void</span><span class="crayon-h"> </span><span class="crayon-e">main</span><span class="crayon-sy">(</span><span class="crayon-t">String</span><span class="crayon-sy">[</span><span class="crayon-sy">]</span><span class="crayon-h"> </span><span class="crayon-v">args</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb83d556277988-4"><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb83d556277988-5"><span class="crayon-h"> </span><span class="crayon-v">System</span><span class="crayon-sy">.</span><span class="crayon-v">out</span><span class="crayon-sy">.</span><span class="crayon-e">println</span><span class="crayon-sy">(</span><span class="crayon-v">Test</span><span class="crayon-sy">.</span><span class="crayon-t">class</span><span class="crayon-sy">.</span><span class="crayon-e">getClassLoader</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">.</span><span class="crayon-e">getResource</span><span class="crayon-sy">(</span><span class="crayon-s">""</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb83d556277988-6"><span class="crayon-h"> </span><span class="crayon-v">System</span><span class="crayon-sy">.</span><span class="crayon-v">out</span><span class="crayon-sy">.</span><span class="crayon-e">println</span><span class="crayon-sy">(</span><span class="crayon-v">Test</span><span class="crayon-sy">.</span><span class="crayon-t">class</span><span class="crayon-sy">.</span><span class="crayon-e">getClassLoader</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">.</span><span class="crayon-e">getResource</span><span class="crayon-sy">(</span><span class="crayon-s">"/"</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-5bfa0a9abb83d556277988-7"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb83d556277988-8"><span class="crayon-sy">}</span></div></div></td>
</tr>
</tbody></table>
</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
運行結果為:
file:/D:/work_space/java/bin/
null
從上面可以看出:
class.getResource("/") == class.getClassLoader().getResource("")
其實,Class.getResource和ClassLoader.getResource本質上是一樣的,都是使用ClassLoader.getResource載入資源的。下面請看一下jdk的Class源碼:
<div id="crayon-5bfa0a9abb841558795553" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" stylex="margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important; height: auto;">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main" stylex="position: relative; z-index: 1; overflow: hidden;">
<table class="crayon-table" stylex="">
<tbody><tr class="crayon-row">
<td class="crayon-nums " data-settings="show">
<div class="crayon-nums-content" stylex="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="crayon-5bfa0a9abb841558795553-1">1</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb841558795553-2">2</div><div class="crayon-num" data-line="crayon-5bfa0a9abb841558795553-3">3</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb841558795553-4">4</div><div class="crayon-num" data-line="crayon-5bfa0a9abb841558795553-5">5</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb841558795553-6">6</div><div class="crayon-num" data-line="crayon-5bfa0a9abb841558795553-7">7</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb841558795553-8">8</div><div class="crayon-num" data-line="crayon-5bfa0a9abb841558795553-9">9</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb841558795553-10">10</div><div class="crayon-num" data-line="crayon-5bfa0a9abb841558795553-11">11</div></div>
</td>
<td class="crayon-code"><div class="crayon-pre" stylex="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="crayon-5bfa0a9abb841558795553-1"><span class="crayon-h"> </span><span class="crayon-m">public</span><span class="crayon-h"> </span><span class="crayon-v">java</span><span class="crayon-sy">.</span><span class="crayon-v">net</span><span class="crayon-sy">.</span><span class="crayon-e">URL </span><span class="crayon-e">getResource</span><span class="crayon-sy">(</span><span class="crayon-t">String</span><span class="crayon-h"> </span><span class="crayon-v">name</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb841558795553-2"><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb841558795553-3"><span class="crayon-h"> </span><span class="crayon-v">name</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-e">resolveName</span><span class="crayon-sy">(</span><span class="crayon-v">name</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb841558795553-4"><span class="crayon-h"> </span><span class="crayon-e">ClassLoader </span><span class="crayon-v">cl</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-e">getClassLoader0</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-5bfa0a9abb841558795553-5"><span class="crayon-h"> </span><span class="crayon-st">if</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-v">cl</span><span class="crayon-o">==</span><span class="crayon-t">null</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb841558795553-6"><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb841558795553-7"><span class="crayon-h"> </span><span class="crayon-c">// A system class.</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb841558795553-8"><span class="crayon-h"> </span><span class="crayon-st">return</span><span class="crayon-h"> </span><span class="crayon-v">ClassLoader</span><span class="crayon-sy">.</span><span class="crayon-e">getSystemResource</span><span class="crayon-sy">(</span><span class="crayon-v">name</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-5bfa0a9abb841558795553-9"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb841558795553-10"><span class="crayon-h"> </span><span class="crayon-st">return</span><span class="crayon-h"> </span><span class="crayon-v">cl</span><span class="crayon-sy">.</span><span class="crayon-e">getResource</span><span class="crayon-sy">(</span><span class="crayon-v">name</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-5bfa0a9abb841558795553-11"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div></div></td>
</tr>
</tbody></table>
</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
從上面就可以看才出來:Class.getResource和ClassLoader.getResource本質上是一樣的。至於為什麼Class.getResource(String path)中path可以"/"開頭,是因為在name = resolveName(name);進行了處理:
<div id="crayon-5bfa0a9abb845359872451" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover" stylex="margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important; height: auto;">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main" stylex="position: relative; z-index: 1; overflow: hidden;">
<table class="crayon-table" stylex="">
<tbody><tr class="crayon-row">
<td class="crayon-nums " data-settings="show">
<div class="crayon-nums-content" stylex="font-size: 12px !important; line-height: 15px !important;"><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-1">1</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-2">2</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-3">3</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-4">4</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-5">5</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-6">6</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-7">7</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-8">8</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-9">9</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-10">10</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-11">11</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-12">12</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-13">13</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-14">14</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-15">15</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-16">16</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-17">17</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-18">18</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-19">19</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-20">20</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-21">21</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-22">22</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-23">23</div><div class="crayon-num crayon-striped-num" data-line="crayon-5bfa0a9abb845359872451-24">24</div><div class="crayon-num" data-line="crayon-5bfa0a9abb845359872451-25">25</div></div>
</td>
<td class="crayon-code"><div class="crayon-pre" stylex="font-size: 12px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-1"><span class="crayon-h"> </span><span class="crayon-m">private</span><span class="crayon-h"> </span><span class="crayon-t">String</span><span class="crayon-h"> </span><span class="crayon-e">resolveName</span><span class="crayon-sy">(</span><span class="crayon-t">String</span><span class="crayon-h"> </span><span class="crayon-v">name</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-2"><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-3"><span class="crayon-h"> </span><span class="crayon-st">if</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-v">name</span><span class="crayon-h"> </span><span class="crayon-o">==</span><span class="crayon-h"> </span><span class="crayon-t">null</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-4"><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-5"><span class="crayon-h"> </span><span class="crayon-st">return</span><span class="crayon-h"> </span><span class="crayon-v">name</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-6"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-7"><span class="crayon-h"> </span><span class="crayon-st">if</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-o">!</span><span class="crayon-v">name</span><span class="crayon-sy">.</span><span class="crayon-e">startsWith</span><span class="crayon-sy">(</span><span class="crayon-s">"/"</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-8"><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-9"><span class="crayon-h"> </span><span class="crayon-t">Class</span><span class="crayon-h"> </span><span class="crayon-v">c</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-r">this</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-10"><span class="crayon-h"> </span><span class="crayon-st">while</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-v">c</span><span class="crayon-sy">.</span><span class="crayon-e">isArray</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-11"><span class="crayon-h"> </span><span class="crayon-v">c</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">c</span><span class="crayon-sy">.</span><span class="crayon-e">getComponentType</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-12"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-13"><span class="crayon-h"> </span><span class="crayon-t">String</span><span class="crayon-h"> </span><span class="crayon-v">baseName</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">c</span><span class="crayon-sy">.</span><span class="crayon-e">getName</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-14"><span class="crayon-h"> </span><span class="crayon-t">int</span><span class="crayon-h"> </span><span class="crayon-v">index</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">baseName</span><span class="crayon-sy">.</span><span class="crayon-e">lastIndexOf</span><span class="crayon-sy">(</span><span class="crayon-s">"."</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-15"><span class="crayon-h"> </span><span class="crayon-st">if</span><span class="crayon-h"> </span><span class="crayon-sy">(</span><span class="crayon-v">index</span><span class="crayon-h"> </span><span class="crayon-o">!=</span><span class="crayon-h"> </span><span class="crayon-o">-</span><span class="crayon-cn">1</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-16"><span class="crayon-h"> </span><span class="crayon-sy">{</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-17"><span class="crayon-h"> </span><span class="crayon-v">name</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">baseName</span><span class="crayon-sy">.</span><span class="crayon-e">substring</span><span class="crayon-sy">(</span><span class="crayon-cn">0</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-v">index</span><span class="crayon-sy">)</span><span class="crayon-sy">.</span><span class="crayon-e">replace</span><span class="crayon-sy">(</span><span class="crayon-s">"."</span><span class="crayon-sy">,</span><span class="crayon-h"> </span><span class="crayon-s">"/"</span><span class="crayon-sy">)</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-18"><span class="crayon-h"> </span><span class="crayon-o">+</span><span class="crayon-s">"/"</span><span class="crayon-o">+</span><span class="crayon-v">name</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-19"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-20"><span class="crayon-h"> </span><span class="crayon-sy">}</span><span class="crayon-h"> </span><span class="crayon-st">else</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-21"><span class="crayon-h"> </span><span class="crayon-sy">{</span><span class="crayon-c">//如果是以"/"開頭,則去掉</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-22"><span class="crayon-h"> </span><span class="crayon-v">name</span><span class="crayon-h"> </span><span class="crayon-o">=</span><span class="crayon-h"> </span><span class="crayon-v">name</span><span class="crayon-sy">.</span><span class="crayon-e">substring</span><span class="crayon-sy">(</span><span class="crayon-cn">1</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-23"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div><div class="crayon-line crayon-striped-line" id="crayon-5bfa0a9abb845359872451-24"><span class="crayon-h"> </span><span class="crayon-st">return</span><span class="crayon-h"> </span><span class="crayon-v">name</span><span class="crayon-sy">;</span></div><div class="crayon-line" id="crayon-5bfa0a9abb845359872451-25"><span class="crayon-h"> </span><span class="crayon-sy">}</span></div></div></td>
</tr>
</tbody></table>
</div>
</div>


※C++ 用遺傳演算法解決TSP問題,旅行商問題
※c++中的虛基類簡單示例
TAG:程序員小新人學習 |