//go:build windows package yu_file import ( yu_fast "gogs.qqck.cn/s/tools/fast" yu_sys "gogs.qqck.cn/s/tools/sys" ) // Get // // @Description: 独占方式(多线程安全)读文件 // @param name 文件路径 func Get(name string) (result []byte) { j_fd := Openfile(name, yu_sys.GENERIC_READ, yu_sys.FILE_SHARE_NO, yu_sys.OPEN_EXISTING, 0) if j_fd == 0 { return } defer yu_sys.CloseHandle.Call(j_fd) j_size, j_ok := getFileSizeEx(j_fd) if !j_ok { return } if j_size == 0 { return } return readFileSize(j_fd, int(j_size)) } // GetS // // @Description: 独占方式(多线程安全)读文件 // @param name 文件路径 func GetS(name string) string { return string(Get(name)) } // Set // // @Description: 独占方式(多线程安全)写文件 // @param name 文件路径 // @param bufs 写出内容... func Set(name string, bufs ...[]byte) bool { j_fd := Openfile(name, yu_sys.GENERIC_WRITE, yu_sys.FILE_SHARE_NO, yu_sys.CREATE_ALWAYS, yu_sys.FILE_FLAG_WRITE_THROUGH) if j_fd == 0 { return false } defer yu_sys.CloseHandle.Call(j_fd) for j_i := 0; j_i < len(bufs); j_i++ { if !writeFile(j_fd, bufs[j_i]) { return false } } return true } // SetS // // @Description: 独占方式(多线程安全)写文件 // @param name 文件路径 // @param bufs 写出内容... func SetS(name string, bufs ...string) bool { j_fd := Openfile(name, yu_sys.GENERIC_WRITE, yu_sys.FILE_SHARE_NO, yu_sys.CREATE_ALWAYS, yu_sys.FILE_FLAG_WRITE_THROUGH) if j_fd == 0 { return false } defer yu_sys.CloseHandle.Call(j_fd) for j_i := 0; j_i < len(bufs); j_i++ { if !writeFile(j_fd, yu_fast.S2B(bufs[j_i])) { return false } } return true } // Put // // @Description: 独占方式(多线程安全)追加文件数据 // @param name 文件路径 // @param bufs 写出内容... func Put(name string, bufs ...[]byte) bool { j_fd := Openfile(name, yu_sys.FILE_APPEND_DATA, yu_sys.FILE_SHARE_NO, yu_sys.OPEN_ALWAYS, yu_sys.FILE_FLAG_WRITE_THROUGH) if j_fd == 0 { return false } defer yu_sys.CloseHandle.Call(j_fd) for j_i := 0; j_i < len(bufs); j_i++ { if !writeFile(j_fd, bufs[j_i]) { return false } } return true } // PutS // // @Description: 独占方式(多线程安全)追加文件数据 // @param name 文件路径 // @param bufs 写出内容... func PutS(name string, bufs ...string) bool { j_fd := Openfile(name, yu_sys.FILE_APPEND_DATA, yu_sys.FILE_SHARE_NO, yu_sys.OPEN_ALWAYS, yu_sys.FILE_FLAG_WRITE_THROUGH) if j_fd == 0 { return false } defer yu_sys.CloseHandle.Call(j_fd) for j_i := 0; j_i < len(bufs); j_i++ { if !writeFile(j_fd, yu_fast.S2B(bufs[j_i])) { return false } } return true }