def testFileBasicInfo(self): attr = win32file.GetFileAttributes(self.__filename) f = win32file.CreateFile(self.__filename, win32file.GENERIC_READ, 0, None, win32con.OPEN_EXISTING, 0, None) self.__handle = f ct, at, wt = win32file.GetFileTime(f) # bug #752: this throws ERROR_BAD_LENGTH (24) in x86 binaries of build 221 basic_info = win32file.GetFileInformationByHandleEx(f, win32file.FileBasicInfo) self.assertEqual(ct, basic_info['CreationTime']) self.assertEqual(at, basic_info['LastAccessTime']) self.assertEqual(wt, basic_info['LastWriteTime']) self.assertEqual(attr, basic_info['FileAttributes'])
def ShowDetail(self, elem): d = views.objectDetail.Dialog() d.Initialize() d.add(_("名前"), elem.basename) d.add(_("パス"), elem.fullpath) if isinstance(elem, browsableObjects.File) or isinstance(elem, browsableObjects.Stream): if elem.size >= 0: d.add(_("サイズ"), misc.ConvertBytesTo(elem.size, misc.UNIT_AUTO, True)) d.add(_("サイズ(バイト)"), elem.size) if isinstance(elem, browsableObjects.Folder): d.add(_("内容"), _("ファイル数: %d サブディレクトリ数: %d") % (elem.fileCount, elem.dirCount)) elif isinstance(elem, browsableObjects.Folder): d.add(_("サイズ"), d.CALCURATING) d.add(_("サイズ(バイト)"), d.CALCURATING) d.add(_("内容"), d.CALCURATING) param = {'lst': [(0, elem.fullpath)], 'callback': d.setDirCalcResult} d.setTask(workerThreads.RegisterTask(workerThreadTasks.DirCalc, param)) if isinstance(elem, browsableObjects.File): d.add(_("作成日時"), elem.creationDate.strftime("%Y/%m/%d(%a) %H:%M:%S")) d.add(_("更新日時"), elem.modDate.strftime("%Y/%m/%d(%a) %H:%M:%S")) d.add(_("属性"), elem.longAttributesString) d.add(_("種類"), elem.typeString) if not elem.shortName == "": d.add(_("短い名前"), elem.shortName) else: d.add(_("短い名前"), _("なし")) h = win32file.CreateFile( elem.fullpath, 0, win32file.FILE_SHARE_READ | win32file.FILE_SHARE_WRITE, None, win32file.OPEN_EXISTING, win32file.FILE_FLAG_BACKUP_SEMANTICS, # これがないとディレクトリを開けない 0) info = win32file.GetFileInformationByHandleEx(h, win32file.FileStandardInfo) if info: d.add(_("消費ディスク領域"), misc.ConvertBytesTo(info["AllocationSize"], misc.UNIT_AUTO, True) + " (" + str(info["AllocationSize"]) + " bytes)") tmp = "" if info["DeletePending"]: tmp += _("削除予約済 ") if info["NumberOfLinks"] > 1: tmp += _("ハードリンクにより他の %d 箇所から参照" % (info["NumberOfLinks"] - 1)) if tmp == "": tmp = _("なし") d.add(_("追加情報"), tmp) if isinstance(elem, browsableObjects.Drive): if elem.free >= 0: d.add(_("フォーマット"), fileSystemManager.GetFileSystemObject(elem.letter)) if elem.total > 0: d.add(_("空き容量"), "%s (%s%%)" % (misc.ConvertBytesTo(elem.free, misc.UNIT_AUTO, True), elem.free * 100 // elem.total)) else: d.add(_("空き容量"), misc.ConvertBytesTo(elem.free, misc.UNIT_AUTO, True)) d.add(_("総容量"), misc.ConvertBytesTo(elem.total, misc.UNIT_AUTO, True)) else: d.add(_("フォーマット"), _("未挿入")) d.add(_("種類"), elem.typeString) if isinstance(elem, browsableObjects.NetworkResource) and elem.address != "": d.add(_("IPアドレス"), elem.address) d.Show() return