Rewinddir () သည်တရားဝင်လမ်းညွှန်လက်ကိုင် (အရင်းအမြစ်အမျိုးအစား) လိုအပ်သည်။ Directory လက်ကိုင်ကို ပိတ်နိုင်သော () သို့မဟုတ်အခြား rewinddir () ကို မပြုလုပ်မီအခြားနည်းလမ်းများဖြင့်ပိတ်ထားပါက Rewinddir () သည် အကျိုးသက်ရောက်မည်မဟုတ်ပါ။
ဖြေရှင်းချက် -
RewindDir () ကိုခေါ်သည့်အခါလမ်းညွှန်လက်ကိုင်သည်မှန်ကန်ကြောင်းနှင့်မပိတ်နိုင်ကြောင်းသေချာအောင်လုပ်ပါ။ ဥပမာအားဖြင့်, သင်သည် rewinddir () ကို သုံးနိုင်သည် ။
<span><span><span class="hljs-variable">$dir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>(</span><span><span class="hljs-string">'/path/to/directory'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$dir</span></span><span>) {
</span><span><span class="hljs-comment">// traversal လမ်းညွှန်</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// directory pointer ကို reset</span></span><span>
</span><span><span class="hljs-title function_ invoke__">rewinddir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>);
}
</span></span>Opendir ကိုအသုံးပြုပြီး directory ကိုမှန်ကန်စွာဖွင့်လှစ်မထားပါ။
Rewinddir () ကို မှန်ကန်သောလမ်းညွှန်အရင်းအမြစ်လက်ကိုင်ပေါ်တွင်ခေါ်ရမည်။ opendir () သည် directory ကိုအောင်မြင်စွာဖွင့်ရန်ပျက်ကွက်ပါက Rewindandir () သည် အလုပ်မလုပ်ပါ။ directory လမ်းကြောင်းမှားယွင်းနေသည့်အခါသို့မဟုတ်ခွင့်ပြုချက်အလုံအလောက်မရှိသည့်အခါ၎င်းသည်များသောအားဖြင့်ဖြစ်လေ့ရှိသည်။
ဖြေရှင်းချက် -
Opendir () သည် ခိုင်လုံသောလမ်းညွှန်လက်ကိုင်ကိုအောင်မြင်စွာပြန်ပို့ခြင်းရှိမရှိစစ်ဆေးပါ။ လမ်းညွှန်လမ်းကြောင်းသည်မှန်ကန်မှုရှိ,
<span><span><span class="hljs-variable">$dir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>(</span><span><span class="hljs-string">'/path/to/directory'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$dir</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"directory ကိုဖွင့ ်. မရပါ!"</span></span><span>);
}
</span><span><span class="hljs-comment">// တယ်လီဖုန်းဆက်ခြင်း rewinddir</span></span><span>
</span><span><span class="hljs-title function_ invoke__">rewinddir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>);
</span></span>စကင် တူး () စနင်္တာ () ကိုအသုံးပြုခဲ့ကြသည်
scandir () နှင့်အခြားအလားတူလုပ်ဆောင်ချက်များသည် directory pointers များကိုမှီခိုခြင်းမရှိဘဲလမ်းညွှန်အကြောင်းအရာများကိုတိုက်ရိုက်ပြန်ပို့လိမ့်မည်။ ထို့ကြောင့် directory list ကိုရယူရန် scandir () ကိုအသုံးပြုပြီးနောက် rewinddir () ကိုခေါ်ခြင်းသည်ရိုးရာလမ်းညွှန်လက်ကိုင်ကိုအသုံးမပြုသည့်အတွက်ပြန်လည်ခေါ်ယူခြင်းသည်အကျိုးသက်ရောက်မည်မဟုတ်ပါ။
ဖြေရှင်းချက် -
အကယ်. သင်သည် directory ပါဝင်မှုကိုအကြိမ်ကြိမ်ရယူရန်လိုအပ်ပါက scandir () အစား Opendir () နှင့် Readdir () ပေါင်းစပ်မှုကိုအသုံးပြုရန်ရွေးချယ်နိုင်သည်။ ဤသည် rewinddir () အကျင့်ကိုကျင့်ကြောင်းသေချာသည်။
<span><span><span class="hljs-variable">$dir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>(</span><span><span class="hljs-string">'/path/to/directory'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$dir</span></span><span>) {
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-title function_ invoke__">rewinddir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>); </span><span><span class="hljs-comment">// စတင်အနေအထားသို့ redirect</span></span><span>
}
</span></span>တစ်ပြိုင်နက်တည်းစစ်ဆင်ရေးပြ problems နာများဖြစ်ပေါ်စေသည်
Multi-Threaded သို့မဟုတ်တစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင်လမ်းညွှန်အကြောင်းအရာများကိုအခြားဖြစ်စဉ်များသို့မဟုတ်ချည်များကပြုပြင်မွမ်းမံခြင်းသို့မဟုတ်ပိတ်ခြင်းကိုပြုပြင်မွမ်းမံနိုင်သည်။
ဖြေရှင်းချက် -
rewinddir () ကို Multi-Threaded သို့မဟုတ်တစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင်အသုံးပြုခြင်းကိုရှောင်ရှားရန်ကြိုးစားပါ,
စနစ်တကျ readdir () ပြန်လာတန်ဖိုးကိုမကိုင်တွယ်ပါ
RewindDir () ကိုမခေါ်မီ deaddir () မှတစ်ဆင့် directory ၏အကြောင်းအရာ၏အစိတ်အပိုင်းကိုသင်ဖတ်ပါကလမ်းညွှန်၏အဆုံးရောက်ရှိခြင်းရှိမရှိစစ်ဆေးရန်လိုအပ်သည်။ ဒီလိုမှမဟုတ်ရင် rewinddir () သိသာအကျိုးသက်ရောက်မှုမရှိပါ။
ဖြေရှင်းချက် -
Rewinddir () ကို မခေါ်မီ directory pointer သည်အဆုံးသို့မရောက်သေးပါက Readdir () မှတစ်ဆင့်ပထမ ဦး ဆုံးအလွတ်ရှိ,
<span><span><span class="hljs-variable">$dir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>(</span><span><span class="hljs-string">'/path/to/directory'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$dir</span></span><span>) {
</span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// Pointer သည်အဆုံးသို့မရောက်ပါစေနှင့်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">rewinddir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>);
}
</span></span>လမ်းညွှန်ပါအကြောင်းအရာများပြောင်းလဲသွားပြီ
Rewinddir ( ဖိုင်ထည့်ခြင်းသို့မဟုတ်ဖျက်ခြင်းကဲ့သို့သော ) ကိုခေါ်ပြီးနောက်လမ်းညွှန်ပြောင်းလဲမှုပါ 0 င်ပါက၎င်းသည်ညွှန်ကြားချက်ကိုအထူးသဖြင့်အကောင်အထည်ဖော်သည့်အခါ,
ဖြေရှင်းချက် -
လမ်းညွှန်ကိုအကြိမ်ပေါင်းများစွာမဖတ်မီလမ်းညွှန်အကြောင်းအရာများကိုပြုပြင်မွမ်းမံရန်ကြိုးစားပါ။ သင်လမ်းညွှန်အကြောင်းအရာမပြောင်းလဲဘဲသေချာစေရန်လိုအပ်ပါက directory အပြောင်းအလဲများကိုရှောင်ရှားရန်လမ်းညွှန်ကိုမဖြတ်မီသင်ခန်းစာများကိုခင်းကျင်းရန်စဉ်းစားနိုင်သည်။