1 В избранное 1 Ответвления 0

huangmiao/testcase

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
fs.go 1.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
huangmiao Отправлено 24.03.2024 08:05 65abcef
package gitee
import (
"bufio"
"bytes"
"os"
"syscall"
)
// PathDirExists todo
func PathDirExists(p string) bool {
st, err := os.Stat(p)
if err != nil {
return false
}
return st.IsDir()
}
func FileIsOpened(path string) bool {
file, err := os.Open(path)
if err != nil {
return false
}
defer file.Close()
fd := file.Fd()
lock := syscall.Flock_t{
Start: 0,
Len: 0,
Type: syscall.F_WRLCK,
Whence: int16(os.SEEK_SET),
}
// Attempt to set a write lock on the file without blocking (F_SETLK)
if err := syscall.FcntlFlock(fd, syscall.F_SETLK, &lock); err != nil {
if errno, ok := err.(syscall.Errno); ok && errno == syscall.EAGAIN {
// The file is locked by another process
return true
}
}
// The file is not locked by another process, or we were able to lock it
return false
}
// PathExists path exists
func PathExists(p string) bool {
if _, err := os.Stat(p); os.IsNotExist(err) {
return false
}
return true
}
// ReadFileFirstLine read file first line
func ReadFileFirstLine(path string) (string, error) {
file, err := os.Open(path)
if err != nil {
return "", err
}
defer file.Close()
reader := bufio.NewReader(file)
var part []byte
var prefix bool
buffer := bytes.NewBuffer(make([]byte, 0, 512))
for {
if part, prefix, err = reader.ReadLine(); err != nil {
return "", err
}
if part == nil {
return "", os.ErrInvalid
}
buffer.Write(part)
if !prefix {
return buffer.String(), nil
}
}
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/huangmiao/testcase.git
git@api.gitlife.ru:huangmiao/testcase.git
huangmiao
testcase
testcase
master