| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> |
| <meta http-equiv="X-UA-Compatible" content="IE=9"/> |
| <meta name="generator" content="Doxygen 1.8.3"/> |
| <title>Lucene.Net: core/Store/FSDirectory.cs Source File</title> |
| <link href="tabs.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="jquery.js"></script> |
| <script type="text/javascript" src="dynsections.js"></script> |
| <link href="search/search.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javascript" src="search/search.js"></script> |
| <script type="text/javascript"> |
| $(document).ready(function() { searchBox.OnSelectItem(0); }); |
| </script> |
| <link href="doxygen.css" rel="stylesheet" type="text/css" /> |
| </head> |
| <body> |
| <div id="top"><!-- do not remove this div, it is closed by doxygen! --> |
| <div id="titlearea"> |
| <table cellspacing="0" cellpadding="0"> |
| <tbody> |
| <tr style="height: 56px;"> |
| <td id="projectlogo"><img alt="Logo" src="lucene-net-icon-128x128.png"/></td> |
| <td style="padding-left: 0.5em;"> |
| <div id="projectname">Lucene.Net |
|  <span id="projectnumber">3.0.3</span> |
| </div> |
| <div id="projectbrief">Lucene.Net is a .NET port of the Java Lucene Indexing Library</div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| <!-- end header part --> |
| <!-- Generated by Doxygen 1.8.3 --> |
| <script type="text/javascript"> |
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); |
| </script> |
| <div id="navrow1" class="tabs"> |
| <ul class="tablist"> |
| <li><a href="Index.html"><span>Main Page</span></a></li> |
| <li><a href="namespaces.html"><span>Packages</span></a></li> |
| <li><a href="annotated.html"><span>Classes</span></a></li> |
| <li class="current"><a href="files.html"><span>Files</span></a></li> |
| <li> |
| <div id="MSearchBox" class="MSearchBoxInactive"> |
| <span class="left"> |
| <img id="MSearchSelect" src="search/mag_sel.png" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| alt=""/> |
| <input type="text" id="MSearchField" value="Search" accesskey="S" |
| onfocus="searchBox.OnSearchFieldFocus(true)" |
| onblur="searchBox.OnSearchFieldFocus(false)" |
| onkeyup="searchBox.OnSearchFieldChange(event)"/> |
| </span><span class="right"> |
| <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> |
| </span> |
| </div> |
| </li> |
| </ul> |
| </div> |
| <div id="navrow2" class="tabs2"> |
| <ul class="tablist"> |
| <li><a href="files.html"><span>File List</span></a></li> |
| <li><a href="globals.html"><span>File Members</span></a></li> |
| </ul> |
| </div> |
| <!-- window showing the filter options --> |
| <div id="MSearchSelectWindow" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| onkeydown="return searchBox.OnSearchSelectKey(event)"> |
| <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Properties</a></div> |
| |
| <!-- iframe showing the search results (closed by default) --> |
| <div id="MSearchResultsWindow"> |
| <iframe src="javascript:void(0)" frameborder="0" |
| name="MSearchResults" id="MSearchResults"> |
| </iframe> |
| </div> |
| |
| <div id="nav-path" class="navpath"> |
| <ul> |
| <li class="navelem"><a class="el" href="dir_1efe588324fc547683bba4a3f1bac847.html">core</a></li><li class="navelem"><a class="el" href="dir_0fd6a22b48ba7ca96d8c1554e5fff3e1.html">Store</a></li> </ul> |
| </div> |
| </div><!-- top --> |
| <div class="header"> |
| <div class="headertitle"> |
| <div class="title">FSDirectory.cs</div> </div> |
| </div><!--header--> |
| <div class="contents"> |
| <a href="_f_s_directory_8cs.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* </span></div> |
| <div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</span></div> |
| <div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * contributor license agreements. See the NOTICE file distributed with</span></div> |
| <div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * this work for additional information regarding copyright ownership.</span></div> |
| <div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</span></div> |
| <div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * (the "License"); you may not use this file except in compliance with</span></div> |
| <div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * the License. You may obtain a copy of the License at</span></div> |
| <div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div> |
| <div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div> |
| <div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * </span></div> |
| <div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div> |
| <div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div> |
| <div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div> |
| <div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * See the License for the specific language governing permissions and</span></div> |
| <div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * limitations under the License.</span></div> |
| <div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div> |
| <div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div> |
| <div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">using</span> System;</div> |
| <div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">using</span> System.Collections.Generic;</div> |
| <div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div> |
| <div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// Used only for WRITE_LOCK_NAME in deprecated create=true case:</span></div> |
| <div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">using</span> System.IO;</div> |
| <div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">using</span> Lucene.Net.Support;</div> |
| <div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="_f_s_directory_8cs.html#a7f688138e25e2205e3431f09e9fec6e8"> 24</a></span> <span class="keyword">using</span> <a class="code" href="_directory_8cs.html#a7f688138e25e2205e3431f09e9fec6e8">IndexFileNameFilter</a> = Lucene.Net.Index.IndexFileNameFilter;</div> |
| <div class="line"><a name="l00025"></a><span class="lineno"><a class="code" href="_f_s_directory_8cs.html#a7d90824eac5b2433e714cc9faeb34d1b"> 25</a></span> <span class="keyword">using</span> <a class="code" href="_syns2_index_8cs.html#a7d90824eac5b2433e714cc9faeb34d1b">IndexWriter</a> = Lucene.Net.Index.IndexWriter;</div> |
| <div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="_f_s_directory_8cs.html#a4d21c5a1cd18c33bc4f3633bd17d823b"> 26</a></span> <span class="keyword">using</span> <a class="code" href="_documents_writer_8cs.html#a4d21c5a1cd18c33bc4f3633bd17d823b">Constants</a> = Lucene.Net.Util.Constants;</div> |
| <div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div> |
| <div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span>Lucene.Net.Store</div> |
| <div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div> |
| <div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  </div> |
| <div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html"> 104</a></span>  <span class="keyword">public</span> <span class="keyword">abstract</span> <span class="keyword">class </span><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html" title=" Base class for Directory implementations that store index files in the file system. There are currently three core subclasses:">FSDirectory</a> : <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_directory.html" title="A Directory is a flat list of files. Files may be written once, when they are created. Once a file is created it may only be opened for read, or deleted. Random access is permitted both when reading and writing.">Directory</a></div> |
| <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  {</div> |
| <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">private</span> <span class="keyword">static</span> System.Security.Cryptography.HashAlgorithm DIGESTER;</div> |
| <div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div> |
| <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">static</span> <a class="code" href="_check_index_8cs.html#a268bfcb9b9cbdec8d60c03647e293e7e">FSDirectory</a>()</div> |
| <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div> |
| <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">try</span></div> |
| <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div> |
| <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  DIGESTER = Cryptography.HashAlgorithm;</div> |
| <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div> |
| <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">catch</span> (System.Exception e)</div> |
| <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div> |
| <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> System.SystemException(e.ToString(), e);</div> |
| <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div> |
| <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div> |
| <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  </div> |
| <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">private</span> <span class="keywordtype">bool</span> checked_Renamed;</div> |
| <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  </div> |
| <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">internal</span> <span class="keywordtype">void</span> CreateDir()</div> |
| <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div> |
| <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (!checked_Renamed)</div> |
| <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div> |
| <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span> (!this.internalDirectory.Exists)</div> |
| <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div> |
| <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">try</span></div> |
| <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div> |
| <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  this.internalDirectory.Create();</div> |
| <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div> |
| <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">catch</span> (Exception)</div> |
| <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div> |
| <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> System.IO.IOException(<span class="stringliteral">"Cannot create directory: "</span> + internalDirectory);</div> |
| <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div> |
| <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  this.internalDirectory.Refresh(); <span class="comment">// need to see the creation</span></div> |
| <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div> |
| <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  </div> |
| <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  checked_Renamed = <span class="keyword">true</span>;</div> |
| <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div> |
| <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div> |
| <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  </div> |
| <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">protected</span> <span class="keyword">internal</span> <span class="keywordtype">void</span> InitOutput(System.String name)</div> |
| <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div> |
| <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  CreateDir();</div> |
| <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  System.IO.FileInfo file = <span class="keyword">new</span> System.IO.FileInfo(System.IO.Path.Combine(internalDirectory.FullName, name));</div> |
| <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span> (file.Exists) <span class="comment">// delete existing, if any</span></div> |
| <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div> |
| <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">try</span></div> |
| <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div> |
| <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  file.Delete();</div> |
| <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div> |
| <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">catch</span> (Exception)</div> |
| <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div> |
| <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> System.IO.IOException(<span class="stringliteral">"Cannot overwrite: "</span> + file);</div> |
| <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div> |
| <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div> |
| <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div> |
| <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  </div> |
| <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">protected</span> <span class="keyword">internal</span> System.IO.DirectoryInfo internalDirectory = null;</div> |
| <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  </div> |
| <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">protected</span> <span class="keyword">internal</span> <a class="code" href="_check_index_8cs.html#a268bfcb9b9cbdec8d60c03647e293e7e">FSDirectory</a>(System.IO.DirectoryInfo path, <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_lock_factory.html" title="Base class for Locking implementation. Directory uses instances of this class to implement locking...">LockFactory</a> lockFactory)</div> |
| <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  {</div> |
| <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// new ctors use always NativeFSLockFactory as default:</span></div> |
| <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span> (lockFactory == null)</div> |
| <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div> |
| <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  lockFactory = <span class="keyword">new</span> <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_native_f_s_lock_factory.html" title="Implements LockFactory using native OS file locks. Note that because this LockFactory relies on java...">NativeFSLockFactory</a>();</div> |
| <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div> |
| <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// Set up lockFactory with cascaded defaults: if an instance was passed in,</span></div> |
| <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// use that; else if locks are disabled, use NoLockFactory; else if the</span></div> |
| <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// system property Lucene.Net.Store.FSDirectoryLockFactoryClass is set,</span></div> |
| <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// instantiate that; else, use SimpleFSLockFactory:</span></div> |
| <div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div> |
| <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  internalDirectory = path;</div> |
| <div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div> |
| <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// due to differences in how Java & .NET refer to files, the checks are a bit different</span></div> |
| <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span> (!internalDirectory.Exists && System.IO.File.Exists(internalDirectory.FullName))</div> |
| <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div> |
| <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="_segment_infos_8cs.html#a2a6014236e864c10f92b72d1b5ded0ec">NoSuchDirectoryException</a>(<span class="stringliteral">"file '"</span> + internalDirectory.FullName + <span class="stringliteral">"' exists but is not a directory"</span>);</div> |
| <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div> |
| <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  SetLockFactory(lockFactory);</div> |
| <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  </div> |
| <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// for filesystem based LockFactory, delete the lockPrefix, if the locks are placed</span></div> |
| <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// in index dir. If no index dir is given, set ourselves</span></div> |
| <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span> (lockFactory is <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_lock_factory.html" title="Base class for file system based locking implementation.">FSLockFactory</a>)</div> |
| <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div> |
| <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  FSLockFactory lf = (FSLockFactory)lockFactory;</div> |
| <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  System.IO.DirectoryInfo dir = lf.<a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_lock_factory.html#a04dd1c0055028cd88ddee4cfcf2a9732" title="Gets the lock directory.">LockDir</a>;</div> |
| <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// if the lock factory has no lockDir set, use the this directory as lockDir</span></div> |
| <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (dir == null)</div> |
| <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div> |
| <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  lf.<a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_lock_factory.html#a04dd1c0055028cd88ddee4cfcf2a9732" title="Gets the lock directory.">LockDir</a> = this.internalDirectory;</div> |
| <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  lf.<a class="code" href="class_lucene_1_1_net_1_1_store_1_1_lock_factory.html#a6aac2302bee58d7776271f099e52a325" title="Gets or sets the prefix in use for all locks created in this LockFactory. This is normally called onc...">LockPrefix</a> = null;</div> |
| <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div> |
| <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (dir.FullName.Equals(<span class="keyword">this</span>.internalDirectory.FullName))</div> |
| <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div> |
| <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  lf.<a class="code" href="class_lucene_1_1_net_1_1_store_1_1_lock_factory.html#a6aac2302bee58d7776271f099e52a325" title="Gets or sets the prefix in use for all locks created in this LockFactory. This is normally called onc...">LockPrefix</a> = null;</div> |
| <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div> |
| <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div> |
| <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div> |
| <div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div> |
| <div class="line"><a name="l00234"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a33ea2927779ca535c4cb90ea0dc76cfa"> 234</a></span>  <span class="keyword">public</span> <span class="keyword">static</span> <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html" title=" Base class for Directory implementations that store index files in the file system. There are currently three core subclasses:">FSDirectory</a> Open(<span class="keywordtype">string</span> path)</div> |
| <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  {</div> |
| <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> Open(<span class="keyword">new</span> DirectoryInfo(path), null);</div> |
| <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div> |
| <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  </div> |
| <div class="line"><a name="l00259"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a4d1e2d61b9d1ab690e6714b05026d9de"> 259</a></span>  <span class="keyword">public</span> <span class="keyword">static</span> <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html" title=" Base class for Directory implementations that store index files in the file system. There are currently three core subclasses:">FSDirectory</a> Open(System.IO.DirectoryInfo path)</div> |
| <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  {</div> |
| <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> Open(path, null);</div> |
| <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div> |
| <div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div> |
| <div class="line"><a name="l00267"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#ae69df4a802e0f14d19428a5591c00d9f"> 267</a></span>  <span class="keyword">public</span> <span class="keyword">static</span> <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html" title=" Base class for Directory implementations that store index files in the file system. There are currently three core subclasses:">FSDirectory</a> Open(System.IO.DirectoryInfo path, <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_lock_factory.html" title="Base class for Locking implementation. Directory uses instances of this class to implement locking...">LockFactory</a> lockFactory)</div> |
| <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div> |
| <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="comment">/* For testing:</span></div> |
| <div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="comment"> MMapDirectory dir=new MMapDirectory(path, lockFactory);</span></div> |
| <div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="comment"> dir.setUseUnmap(true);</span></div> |
| <div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="comment"> return dir;</span></div> |
| <div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="comment"> */</span></div> |
| <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  </div> |
| <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span> (<a class="code" href="_documents_writer_8cs.html#a4d21c5a1cd18c33bc4f3633bd17d823b">Constants</a>.WINDOWS)</div> |
| <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  {</div> |
| <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_simple_f_s_directory.html" title="A straightforward implementation of FSDirectory using java.io.RandomAccessFile. However, this class has poor concurrent performance (multiple threads will bottleneck) as it synchronizes when multiple threads read from the same file. It's usually better to use NIOFSDirectory or MMapDirectory instead. ">SimpleFSDirectory</a>(path, lockFactory);</div> |
| <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div> |
| <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">else</span></div> |
| <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div> |
| <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">//NIOFSDirectory is not implemented in Lucene.Net</span></div> |
| <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">//return new NIOFSDirectory(path, lockFactory);</span></div> |
| <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_simple_f_s_directory.html" title="A straightforward implementation of FSDirectory using java.io.RandomAccessFile. However, this class has poor concurrent performance (multiple threads will bottleneck) as it synchronizes when multiple threads read from the same file. It's usually better to use NIOFSDirectory or MMapDirectory instead. ">SimpleFSDirectory</a>(path, lockFactory);</div> |
| <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div> |
| <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  }</div> |
| <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  </div> |
| <div class="line"><a name="l00297"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a4e5a5dfe5f2b8038044dcc3f20f7fa81"> 297</a></span>  <span class="keyword">public</span> <span class="keyword">static</span> System.String[] ListAll(System.IO.DirectoryInfo dir)</div> |
| <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  {</div> |
| <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">if</span> (!dir.Exists)</div> |
| <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  {</div> |
| <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="_segment_infos_8cs.html#a2a6014236e864c10f92b72d1b5ded0ec">NoSuchDirectoryException</a>(<span class="stringliteral">"directory '"</span> + dir.FullName + <span class="stringliteral">"' does not exist"</span>);</div> |
| <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div> |
| <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (System.IO.File.Exists(dir.FullName))</div> |
| <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  {</div> |
| <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="_segment_infos_8cs.html#a2a6014236e864c10f92b72d1b5ded0ec">NoSuchDirectoryException</a>(<span class="stringliteral">"File '"</span> + dir.FullName + <span class="stringliteral">"' does not exist"</span>);</div> |
| <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div> |
| <div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div> |
| <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// Exclude subdirs, only the file names, not the paths</span></div> |
| <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  System.IO.FileInfo[] files = dir.GetFiles();</div> |
| <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  System.String[] result = <span class="keyword">new</span> System.String[files.Length];</div> |
| <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < files.Length; i++)</div> |
| <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  {</div> |
| <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  result[i] = files[i].Name;</div> |
| <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div> |
| <div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div> |
| <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="comment">// no reason to return null, if the directory cannot be listed, an exception </span></div> |
| <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="comment">// will be thrown on the above call to dir.GetFiles()</span></div> |
| <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">// use of LINQ to create the return value array may be a bit more efficient</span></div> |
| <div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div> |
| <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">return</span> result;</div> |
| <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div> |
| <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  </div> |
| <div class="line"><a name="l00328"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#aca5d785ceced2914a18c848d2481a068"> 328</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> System.String[] ListAll()</div> |
| <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  {</div> |
| <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">return</span> ListAll(internalDirectory);</div> |
| <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div> |
| <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  </div> |
| <div class="line"><a name="l00335"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#ab98439d9a00c3d8b5c737250c9f5590c"> 335</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> FileExists(System.String name)</div> |
| <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div> |
| <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  System.IO.FileInfo file = <span class="keyword">new</span> System.IO.FileInfo(System.IO.Path.Combine(internalDirectory.FullName, name));</div> |
| <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> file.Exists;</div> |
| <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div> |
| <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  </div> |
| <div class="line"><a name="l00343"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#aca2ba2225c3c5f65a1d00dc38005d392"> 343</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">long</span> FileModified(System.String name)</div> |
| <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  {</div> |
| <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  System.IO.FileInfo file = <span class="keyword">new</span> System.IO.FileInfo(System.IO.Path.Combine(internalDirectory.FullName, name));</div> |
| <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">return</span> (<span class="keywordtype">long</span>)file.LastWriteTime.ToUniversalTime().Subtract(<span class="keyword">new</span> DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds; <span class="comment">//{{LUCENENET-353}}</span></div> |
| <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div> |
| <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  </div> |
| <div class="line"><a name="l00351"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a6c00a49d9b26eadc0a3849f206462e97"> 351</a></span>  <span class="keyword">public</span> <span class="keyword">static</span> <span class="keywordtype">long</span> FileModified(System.IO.FileInfo directory, System.String name)</div> |
| <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  {</div> |
| <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  System.IO.FileInfo file = <span class="keyword">new</span> System.IO.FileInfo(System.IO.Path.Combine(directory.FullName, name));</div> |
| <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">return</span> (<span class="keywordtype">long</span>)file.LastWriteTime.ToUniversalTime().Subtract(<span class="keyword">new</span> DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds; <span class="comment">//{{LUCENENET-353}}</span></div> |
| <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  }</div> |
| <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  </div> |
| <div class="line"><a name="l00358"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a7c57302da469d7b122d29d64e935effc"> 358</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> TouchFile(System.String name)</div> |
| <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  {</div> |
| <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  System.IO.FileInfo file = <span class="keyword">new</span> System.IO.FileInfo(System.IO.Path.Combine(internalDirectory.FullName, name));</div> |
| <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  file.LastWriteTime = System.DateTime.Now;</div> |
| <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div> |
| <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  </div> |
| <div class="line"><a name="l00366"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#add4ee39c195491aeff84ee4592a84be4"> 366</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">long</span> FileLength(System.String name)</div> |
| <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  {</div> |
| <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  System.IO.FileInfo file = <span class="keyword">new</span> System.IO.FileInfo(System.IO.Path.Combine(internalDirectory.FullName, name));</div> |
| <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">return</span> file.Exists ? file.Length : 0;</div> |
| <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div> |
| <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  </div> |
| <div class="line"><a name="l00374"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a6d9a6a69f92227518d5e27a0363f58b0"> 374</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> DeleteFile(System.String name)</div> |
| <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  {</div> |
| <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  System.IO.FileInfo file = <span class="keyword">new</span> System.IO.FileInfo(System.IO.Path.Combine(internalDirectory.FullName, name));</div> |
| <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">try</span></div> |
| <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  {</div> |
| <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  file.Delete();</div> |
| <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div> |
| <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">catch</span> (Exception)</div> |
| <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  {</div> |
| <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> System.IO.IOException(<span class="stringliteral">"Cannot delete "</span> + file);</div> |
| <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  }</div> |
| <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div> |
| <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  </div> |
| <div class="line"><a name="l00388"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#abd334a77552a373adef367d6707d30ba"> 388</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Sync(System.String name)</div> |
| <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  {</div> |
| <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  System.IO.FileInfo fullFile = <span class="keyword">new</span> System.IO.FileInfo(System.IO.Path.Combine(internalDirectory.FullName, name));</div> |
| <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordtype">bool</span> success = <span class="keyword">false</span>;</div> |
| <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordtype">int</span> retryCount = 0;</div> |
| <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  System.IO.IOException exc = null;</div> |
| <div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">while</span> (!success && retryCount < 5)</div> |
| <div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  {</div> |
| <div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  retryCount++;</div> |
| <div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  System.IO.FileStream file = null;</div> |
| <div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">try</span></div> |
| <div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  {</div> |
| <div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">try</span></div> |
| <div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div> |
| <div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  file = <span class="keyword">new</span> System.IO.FileStream(fullFile.FullName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite);</div> |
| <div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="class_lucene_1_1_net_1_1_support_1_1_file_support.html" title="Represents the methods to support some operations over files. ">FileSupport</a>.<a class="code" href="class_lucene_1_1_net_1_1_support_1_1_file_support.html#ae93d811262769a86ab5e4b765a25d7bf" title="Flushes the specified file stream. Ensures that all buffered data is actually written to the file sys...">Sync</a>(file);</div> |
| <div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  success = <span class="keyword">true</span>;</div> |
| <div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div> |
| <div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">finally</span></div> |
| <div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  {</div> |
| <div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">if</span> (file != null)</div> |
| <div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  file.Close();</div> |
| <div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div> |
| <div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div> |
| <div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">catch</span> (System.IO.IOException ioe)</div> |
| <div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  {</div> |
| <div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">if</span> (exc == null)</div> |
| <div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  exc = ioe;</div> |
| <div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  </div> |
| <div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="comment">// Pause 5 msec</span></div> |
| <div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  System.Threading.Thread.Sleep(5);</div> |
| <div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  </div> |
| <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div> |
| <div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div> |
| <div class="line"><a name="l00423"></a><span class="lineno"> 423</span> </div> |
| <div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">if</span> (!success && exc != null)</div> |
| <div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// Throw original exception</span></div> |
| <div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">throw</span> exc;</div> |
| <div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div> |
| <div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  </div> |
| <div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// Inherit javadoc</span></div> |
| <div class="line"><a name="l00430"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a471b2089fdd070fd543b1ffad3659ab6"> 430</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_index_input.html" title="Abstract base class for input from a file in a Directory. A random-access input stream. Used for all Lucene index input operations. ">IndexInput</a> OpenInput(System.String name)</div> |
| <div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  {</div> |
| <div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">return</span> OpenInput(name, <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_buffered_index_input.html" title="Base implementation class for buffered IndexInput. ">BufferedIndexInput</a>.<a class="code" href="class_lucene_1_1_net_1_1_store_1_1_buffered_index_input.html#a57f50895a77d1f3942afac4a1df5a393" title="Default buffer size ">BUFFER_SIZE</a>);</div> |
| <div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div> |
| <div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  </div> |
| <div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keyword">private</span> <span class="keyword">static</span> readonly <span class="keywordtype">char</span>[] HEX_DIGITS = <span class="keyword">new</span> <span class="keywordtype">char</span>[]{<span class="charliteral">'0'</span>, <span class="charliteral">'1'</span>, <span class="charliteral">'2'</span>, <span class="charliteral">'3'</span>, <span class="charliteral">'4'</span>, <span class="charliteral">'5'</span>, <span class="charliteral">'6'</span>, <span class="charliteral">'7'</span>, <span class="charliteral">'8'</span>, <span class="charliteral">'9'</span>, <span class="charliteral">'a'</span>, <span class="charliteral">'b'</span>, <span class="charliteral">'c'</span>, <span class="charliteral">'d'</span>, <span class="charliteral">'e'</span>, <span class="charliteral">'f'</span>};</div> |
| <div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div> |
| <div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div> |
| <div class="line"><a name="l00440"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#af05baabb53c64d7de5cff18b1ce2d7f4"> 440</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">string</span> GetLockId()</div> |
| <div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div> |
| <div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  System.String dirName; <span class="comment">// name to be hashed</span></div> |
| <div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">try</span></div> |
| <div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  {</div> |
| <div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  dirName = internalDirectory.FullName;</div> |
| <div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div> |
| <div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">catch</span> (System.IO.IOException e)</div> |
| <div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div> |
| <div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> System.SystemException(e.ToString(), e);</div> |
| <div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div> |
| <div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div> |
| <div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  byte[] digest;</div> |
| <div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  lock (DIGESTER)</div> |
| <div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  {</div> |
| <div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  digest = DIGESTER.ComputeHash(System.Text.Encoding.UTF8.GetBytes(dirName));</div> |
| <div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div> |
| <div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  System.Text.StringBuilder buf = <span class="keyword">new</span> System.Text.StringBuilder();</div> |
| <div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  buf.Append(<span class="stringliteral">"lucene-"</span>);</div> |
| <div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < digest.Length; i++)</div> |
| <div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  {</div> |
| <div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordtype">int</span> b = digest[i];</div> |
| <div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  buf.Append(HEX_DIGITS[(b >> 4) & 0xf]);</div> |
| <div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  buf.Append(HEX_DIGITS[b & 0xf]);</div> |
| <div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div> |
| <div class="line"><a name="l00466"></a><span class="lineno"> 466</span> </div> |
| <div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">return</span> buf.ToString();</div> |
| <div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div> |
| <div class="line"><a name="l00469"></a><span class="lineno"> 469</span> </div> |
| <div class="line"><a name="l00470"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a10db6d3563f9a06e5eacecb4b23c1aaa"> 470</a></span>  <span class="keyword">protected</span> <span class="keyword">override</span> <span class="keywordtype">void</span> Dispose(<span class="keywordtype">bool</span> disposing)</div> |
| <div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  {</div> |
| <div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  lock (<span class="keyword">this</span>)</div> |
| <div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  {</div> |
| <div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  isOpen = <span class="keyword">false</span>;</div> |
| <div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div> |
| <div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div> |
| <div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div> |
| <div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// Java Lucene implements GetFile() which returns a FileInfo.</span></div> |
| <div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">// For Lucene.Net, GetDirectory() is more appropriate</span></div> |
| <div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div> |
| <div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keyword">public</span> <span class="keyword">virtual</span> DirectoryInfo <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_directory.html" title="A Directory is a flat list of files. Files may be written once, when they are created. Once a file is created it may only be opened for read, or deleted. Random access is permitted both when reading and writing.">Directory</a></div> |
| <div class="line"><a name="l00482"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#aa3d77002a85376ccd723d5cc0af8bdd6"> 482</a></span>  {</div> |
| <div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keyword">get</span></div> |
| <div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  {</div> |
| <div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  EnsureOpen();</div> |
| <div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">return</span> internalDirectory;</div> |
| <div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div> |
| <div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div> |
| <div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div> |
| <div class="line"><a name="l00491"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a1e632c5890208be7253c513430483271"> 491</a></span>  <span class="keyword">public</span> <span class="keyword">override</span> System.String ToString()</div> |
| <div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  {</div> |
| <div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">return</span> this.GetType().FullName + <span class="stringliteral">"@"</span> + internalDirectory + <span class="stringliteral">" lockFactory="</span> + <a class="code" href="class_lucene_1_1_net_1_1_store_1_1_lock_factory.html" title="Base class for Locking implementation. Directory uses instances of this class to implement locking...">LockFactory</a>;</div> |
| <div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div> |
| <div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  </div> |
| <div class="line"><a name="l00502"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#acf0169542a81c156510161d16aaf355d"> 502</a></span>  <span class="keyword">public</span> <span class="keyword">static</span> readonly <span class="keywordtype">int</span> DEFAULT_READ_CHUNK_SIZE = <a class="code" href="_documents_writer_8cs.html#a4d21c5a1cd18c33bc4f3633bd17d823b">Constants</a>.JRE_IS_64BIT ? <span class="keywordtype">int</span>.MaxValue: 100 * 1024 * 1024;</div> |
| <div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  </div> |
| <div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="comment">// LUCENE-1566</span></div> |
| <div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keyword">private</span> <span class="keywordtype">int</span> chunkSize = DEFAULT_READ_CHUNK_SIZE;</div> |
| <div class="line"><a name="l00506"></a><span class="lineno"> 506</span> </div> |
| <div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keyword">public</span> <span class="keywordtype">int</span> ReadChunkSize</div> |
| <div class="line"><a name="l00513"></a><span class="lineno"><a class="code" href="class_lucene_1_1_net_1_1_store_1_1_f_s_directory.html#a15f6b09d7e61e94574f16a7f1af47683"> 513</a></span>  {</div> |
| <div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keyword">get</span></div> |
| <div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  {</div> |
| <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">// LUCENE-1566</span></div> |
| <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">return</span> chunkSize;</div> |
| <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  }</div> |
| <div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keyword">set</span></div> |
| <div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  {</div> |
| <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="comment">// LUCENE-1566</span></div> |
| <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">if</span> (value <= 0)</div> |
| <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  {</div> |
| <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">throw</span> <span class="keyword">new</span> System.ArgumentException(<span class="stringliteral">"chunkSize must be positive"</span>);</div> |
| <div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  }</div> |
| <div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">if</span> (!<a class="code" href="_documents_writer_8cs.html#a4d21c5a1cd18c33bc4f3633bd17d823b">Constants</a>.JRE_IS_64BIT)</div> |
| <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  {</div> |
| <div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  this.chunkSize = value;</div> |
| <div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div> |
| <div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div> |
| <div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div> |
| <div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div> |
| <div class="line"><a name="l00533"></a><span class="lineno"> 533</span> }</div> |
| </div><!-- fragment --></div><!-- contents --> |
| <!-- start footer part --> |
| <hr class="footer"/><address class="footer"><small> |
| Generated on Thu Jan 3 2013 02:12:46 for Lucene.Net by  <a href="http://www.doxygen.org/index.html"> |
| <img class="footer" src="doxygen.png" alt="doxygen"/> |
| </a> 1.8.3 |
| </small></address> |
| </body> |
| </html> |