使用来遍历文件和目录牛

减速机/变速机2021年09月06日

#region 声明WIN32API函数以及结构 **************************************

[Serializable,

ructLayout

(quential,

CharSet = to

),

stFitMapping(false)]

private struct WIN32_FIND_DATA

{

public int dwFileAttributes;

public int ftCreationTime_dwLowDateTime;

public int ftCreationTime_dwHighDateTime;

public int ftLastAccessTime_dwLowDateTime;

public int ftLastAccessTime_dwHighDateTime;

public int ftLastWriteTime_dwLowDateTime;

public int ftLastWriteTime_dwHighDateTime;

public int nFileSizeHigh;

public int nFileSizeLow;

public int dwReserved0;

public int dwReserved1;

[rshalAs

(ValTStr,

SizeConst = 260)]

public string cFileName;

[rshalAs

(ValTStr,

SizeConst = 14)]

public string cAlternateFileName;

}

[lImport

(\"l\",

CharSet = to,

SetLastError = true)]

private static extern IntPtr FindFirstFile(string pFileName, ref WIN32_FIND_DATA pFindFileData);

[lImport

(\"l\",

CharSet = to,

SetLastError = true)]

private static extern bool FindNextFile(IntPtr hndFindFile, ref WIN32_FIND_DATA lpFindFileData);

[lImport(\"l\", SetLastError = true)]

private static extern bool FindClose(IntPtr hndFindFile);

private static long ToLong( int height , int low)

{

long v = ( uint ) height ;

v = v 0x20;

v = v | ( ( uint )low );

return v;

}

private static void WinIOError(int errorCode, string str)

{

switch (errorCode)

{

case 80:

throw new Exception(\"IO_FileExists :\" + str);

case 0x57:

throw new Exception(\"IOError:\" + MakeHRFromErrorCode(errorCode));

case 0xce:

throw new thTooLongException(\"PathTooLong:\" + str );

case 2:

throw new leNotFoundException(\"FileNotFound:\" + str);

case 3:

throw new rectoryNotFoundException(\"PathNotFound:\" + str);

case 5:

throw new UnauthorizedAccessException(\"UnauthorizedAccess:\" + str);

case 0x20:

throw new Exception(\"IO_SharingViolation:\" + str);

}

throw new Exception(\"IOError:\" + MakeHRFromErrorCode(errorCode));

}

private static int MakeHRFromErrorCode(int errorCode)

{

return (- | errorCode);

}

#endregion

#region 内部代码群 ****************************************************

private static readonly IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1);

/// summary

/// 查找处理的底层句柄

/// /summary

private Ptr intSearchHandler = INVALID_HANDLE_VALUE;

private WIN32_FIND_DATA myData = new WIN32_FIND_DATA();

/// summary

/// 开始搜索标志

而又对自己购买的商品有维权需求 /// /summary

private bool bolStartSearchFlag = false;

/// summary

/// 关闭内部句柄

/// /summary

private void CloseHandler()

{

if (SearchHandler != INVALID_HANDLE_VALUE)

{

FindClose(SearchHandler);

SearchHandler = INVALID_HANDLE_VALUE;

}

}

/// summary

/// 开始搜索

/// /summary

/// returns操作是否成功/returns

private bool StartSearch()

{

bolStartSearchFlag = true;

bolIsEmpty = false;

objCurrentObject = null;

intLastErrorCode = 0;

string strPath = bine(strSearchPath, rSearchPattern);

oseHandler();

intSearchHandler = FindFirstFile(strPath, ref myData);

if (intSearchHandler == INVALID_HANDLE_VALUE)

{

intLastErrorCode = tLastWin32Error();

if (intLastErrorCode == 2)

{

bolIsEmpty = true;

return false;

}

if( lThrowIOException )

WinIOError( intLastErrorCode , strSearchPath);

else

return false;

}

return true;

}

查看本文来源

乌海治疗白癜风医院费用
武汉哪里专业治白癜风
肾损伤高血压用什么药效果好
相关阅读
丁彦雨航现身野球场训练,为重回巅峰只用了?山东硬汉发出4字感慨

沈阳等待时间4年初27日假消息,就在CBA总冠军落幕之际,济宁女足阵中的顶薪...

2024-09-05
你就不要这样一来言爱,不要随意让爱潮泛滥

你就绝不就会轻易言爱,绝不就会可任意让爱潮洪水,绝不就会将人类所最值...

2024-06-29
成为“物件人”,有多少身不由己?

近几年常听到“应用软件人”的却说法,寓指就是人在庞大的实用观念机器全...

2024-05-05
千万不要随便穿著肉色的衣服…哈哈哈哈狠狠代入了!

以前的宝子们 有不会一如既往地持续保持好心情呢 如果不会也就让 以前的开...

2023-12-21
新增5个准入地!2022年法考准入条件地方名单汇总

有更加多乒乓私信追问合合杆菌,关于2022法考调高前提条件地四区有哪些的...

2023-12-16
蓝天燃气(605368.SH)发预盈,预计上半年盈利3.2亿元-3.6亿元,同比增加65.75%-8

蓝天燃气(605368.SH)发布公告,公司预估2022年半年度发挥作用归于香港交易所债...

2023-12-10
友情链接