نخواندن پوشه d:\System Volume Information درون درایو
در درایو مثلا d:\ فولدری بنام d:\System Volume Information
وجود دارد
برنامه ای است
که محتویات فولدر های درایو d:\ را درون یک کمبوباکس قرار میدهد
موقع run برنامه پیغام زیر را میدهد
چگونه میتوان کدی نوشت که کامپیوتر این فولدر d:\System Volume Information را نخواند و فولدر بعدی رابخواند
چگونه میتوان این کار را انجام داد
:تشویق::تشویق:
نقل قول: نخواندن پوشه d:\System Volume Information درون درایو
به نظر من مسیر فایلتو کامل تعریف نکردی مثلاً از مسیر زیر باید استفاده کنی :
string SerarchPath = @"E:\System Valume Information\MyFile.txt";
نقل قول: نخواندن پوشه d:\System Volume Information درون درایو
دوست عزیز,
من مطمئنم نود درصد کسایی که پست شما رو دیدن تا حالا این مشکل رو برای خودشون حل کردن.
ولی جواب شما رو نمیدن.من هم نمیدم.
چون وقتی شما عکس کدت رو میزاری من هم عکس بلد بودنم رو میزارم.
متن کدتون رو بزارید.
نقل قول: نخواندن پوشه d:\System Volume Information درون درایو
سلام
این پیغامی که میده به خاطر این هست که این پوشه سیستمی هست و توسط ویندوز محافظت میشه و اجازه دسترسی رو بهتون نمیده.
چیزی که به نظرم میاد اینه که باید این پوشه رو تو کدتون به عنوان اسثنا بیارین که ازش عبور کنه.اگه کد یا راه حلی به ذهنم رسید اینجا میذارم!
نقل قول: نخواندن پوشه d:\System Volume Information درون درایو
نقل قول:
نوشته شده توسط
FastCode
دوست عزیز,
من مطمئنم نود درصد کسایی که پست شما رو دیدن تا حالا این مشکل رو برای خودشون حل کردن.
ولی جواب شما رو نمیدن.من هم نمیدم.
چون وقتی شما عکس کدت رو میزاری من هم عکس بلد بودنم رو میزارم.
متن کدتون رو بزارید.
کد من اینه
ArrayList al = new ArrayList();
private void files(string str)
{
string searchpatern = combo_search_patern.Text.Trim ();
DirectoryInfo dinfo = new DirectoryInfo(str);
FileInfo[] files = dinfo.GetFiles
(searchpatern);
foreach (FileInfo itemf in files)
{
listView1.Items.Add(itemf.FullName);
al.Add(itemf.Name);
}
label1.Text = al.Count.ToString();
}
public void pathfile()
{
DirectoryInfo dinfo = new DirectoryInfo(combo_drive.Text );
DirectoryInfo[] di = dinfo.GetDirectories();
FileInfo[] file = dinfo.GetFiles(combo_search_patern.Text);
foreach (FileInfo item in file)
{
listView1.Items.Add(item.FullName);
}
foreach (DirectoryInfo item in di)
{
string s = combo_drive.Text + "\\" + item.Name;
files(s);
}
}
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
pathfile();
}
:تشویق::تشویق:
نقل قول: نخواندن پوشه d:\System Volume Information درون درایو
نقل قول:
نوشته شده توسط
m0hammad_01
سلام
این پیغامی که میده به خاطر این هست که این پوشه سیستمی هست و توسط ویندوز محافظت میشه و اجازه دسترسی رو بهتون نمیده.
چیزی که به نظرم میاد اینه که باید این پوشه رو تو کدتون به عنوان اسثنا بیارین که ازش عبور کنه.اگه کد یا راه حلی به ذهنم رسید اینجا میذارم!
حق با شماست
ولی راه حل چیه؟
:تشویق:
نقل قول: نخواندن پوشه d:\System Volume Information درون درایو
نقل قول:
نوشته شده توسط
alexmcse
ولی راه حل چیه؟
خودتون کد رو نوشتین بهتر میتونید تغییرش بدین و باهاش بازی کنید.این هم راه حل:
اونجایی که میخواد فایلهای داخل پوشه مورد نظر رو فراخوانی کنه، بیاین Try - Catch بذارین. اینطوری وقتی به فایلهای مشکل دار رسید، میره تو Catch و در عمل برنامتون ازش عبور میکنه.
این کد ها شاید کمکتون کنه:
msdn.microsoft.com/en-us/library/bb513869.aspx
http://www.daniweb.com/software-deve...lume-is-denied
نقل قول: نخواندن پوشه d:\System Volume Information درون درایو
من خودم برای دور زدن این مشکل از try / catch استفاده کردم
هر فولدری که دسترسی بهش ممنوع باشه، به راحتی نادیده گرفته میشه و میره سراغ بعد
نقل قول: نخواندن پوشه d:\System Volume Information درون درایو
امتحان بزن
خودم با اين روش درست كار كرده
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace Archivemultimedia
{
public partial class Formin_Auto : Form
{
public Formin_Auto()
{
InitializeComponent();
}
private void Formin_Auto_Load(object sender, EventArgs e)
{
insert_drive();
}
public void insert_drive()
{
DriveInfo[] drive = DriveInfo.GetDrives();
comboBox_drive.Items.Clear();
for (int i = 0; i < drive.Length ; i++)
{
if (drive[i].IsReady)
comboBox_drive.Items.Add(drive[i]);
}
}
private void but_add_Click(object sender, EventArgs e)
{
if (comboBox_drive.SelectedIndex != -1)
{
DirectoryInfo D_info = new DirectoryInfo(comboBox_drive.Text);
search_drive( D_info.Root);
}
}
private void search_drive( FileSystemInfo fSysInfo)
{
DirectoryInfo dInfo;
dInfo = new DirectoryInfo(fSysInfo.FullName);
FileSystemInfo[] fileSysInfo = dInfo.GetFileSystemInfos();
foreach (FileSystemInfo fsi in fileSysInfo)
{
Application.DoEvents();
//if is file
if((fsi.Attributes & FileAttributes.Archive )== FileAttributes.Archive )
{
//كاري كه ميخواي انجام بده
}
//if is directory
if ((fsi.Attributes & FileAttributes.Directory) ==
FileAttributes.Directory)
{
if ((fsi.Name != "System Volume Information") && (fsi.Name != "$RECYCLE.BIN"))
search_drive( fsi);
}
}
//--------------------
break;
}
}
}