123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- //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
- }
|