#¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ # * FileTest (Unicode), @cheapmunk.naver, 2014. 12. 29 #¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ module FileTest PathFileExists = Win32API.new('Shlwapi', 'PathFileExistsW', 'p', 'l') PathIsDirectory = Win32API.new('Shlwapi', 'PathIsDirectoryW', 'p', 'l') CreateFile = Win32API.new('kernel32', 'CreateFileW', 'pllllll', 'l') GetFileSize = Win32API.new('kernel32', 'GetFileSize', 'll', 'l') CloseHandle = Win32API.new('kernel32', 'CloseHandle', 'l', 'l') module_function def exist?(filename) PathFileExists.call(filename.to_unicode) == 0x1 end def directory?(filename) PathIsDirectory.call(filename.to_unicode) == 0x10 end def file?(filename) PathIsDirectory.call(filename.to_unicode) == 0 end def size(filename) # ½ÇÆÐ => Error::ENOENT °¡ ¾Æ´Ñ -1 ¹Ýȯ h = CreateFile.call(filename.to_unicode, 0x80000000, 0, 0, 3, 0, 0) size = GetFileSize.call(h, 0) CloseHandle.call(h) size end end class String MultiByteToWideChar = Win32API.new('kernel32', 'MultiByteToWideChar', 'llplpl', 'l') WideCharToMultiByte = Win32API.new('kernel32', 'WideCharToMultiByte', 'llplplpp', 'l') def to_unicode len = MultiByteToWideChar.call(65001, 0, self, -1, 0, 0) MultiByteToWideChar.call(65001, 0, self, -1, buf = '\0' * len, len) return buf end end