Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,345 @@
|
||||
package fileUtil
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func BenchmarkWriteFile(b *testing.B) {
|
||||
path := GetCurrentPath()
|
||||
fmt.Printf("CurrPath:%s\n", path)
|
||||
|
||||
for i := 0; i < b.N; i++ {
|
||||
WriteFile(path, "test.txt", true, fmt.Sprintf("line %d", i))
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsFileExists(t *testing.T) {
|
||||
path := GetCurrentPath()
|
||||
fmt.Printf("CurrPath:%s\n", path)
|
||||
fileName := fmt.Sprintf("%s/%s", path, "test.txt")
|
||||
fmt.Printf("FileName:%s\n", fileName)
|
||||
if exists, err := IsFileExists(fileName); err != nil || exists {
|
||||
t.Errorf("the file %s should not be exists, but now it's exists", fileName)
|
||||
}
|
||||
|
||||
if err := WriteFile(path, "test.txt", true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
|
||||
if exists, err := IsFileExists(fileName); err != nil || !exists {
|
||||
t.Errorf("the file %s should be exists, but now it's not exists", fileName)
|
||||
}
|
||||
|
||||
if content, err := ReadFileContent(fileName); err != nil {
|
||||
t.Errorf("there should be no error, but now err:%s", err)
|
||||
} else {
|
||||
fmt.Printf("Content:%s\n", content)
|
||||
}
|
||||
|
||||
DeleteFile(fileName)
|
||||
}
|
||||
|
||||
func TestIsDirectoryExists(t *testing.T) {
|
||||
path := GetCurrentPath()
|
||||
fmt.Printf("CurrPath:%s\n", path)
|
||||
filePath := filepath.Join(path, "Parent")
|
||||
if exists, err := IsDirectoryExists(filePath); err != nil || exists {
|
||||
t.Errorf("the file %s should not be exists, but now it's exists", filePath)
|
||||
}
|
||||
|
||||
fileName := fmt.Sprintf("%s/%s", filePath, "test.txt")
|
||||
|
||||
if err := WriteFile(filePath, "test.txt", true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
|
||||
if exists, err := IsDirectoryExists(filePath); err != nil || !exists {
|
||||
t.Errorf("the file %s should be exists, but now it's not exists", filePath)
|
||||
}
|
||||
|
||||
if content, err := ReadFileContent(fileName); err != nil {
|
||||
t.Errorf("there should be no error, but now err:%s", err)
|
||||
} else {
|
||||
fmt.Printf("Content:%s\n", content)
|
||||
}
|
||||
|
||||
DeleteFile(fileName)
|
||||
}
|
||||
|
||||
func TestIsDirExists(t *testing.T) {
|
||||
path := GetCurrentPath()
|
||||
fmt.Printf("CurrPath:%s\n", path)
|
||||
filePath := filepath.Join(path, "Parent2")
|
||||
if IsDirExists(filePath) {
|
||||
t.Errorf("the file %s should not be exists, but now it's exists", filePath)
|
||||
}
|
||||
|
||||
fileName := fmt.Sprintf("%s/%s", filePath, "test.txt")
|
||||
if err := WriteFile(filePath, "test.txt", true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
|
||||
if IsDirExists(filePath) == false {
|
||||
t.Errorf("the file %s should be exists, but now it's not exists", filePath)
|
||||
}
|
||||
|
||||
if content, err := ReadFileContent(fmt.Sprintf("%s/%s", filePath, "test.txt")); err != nil {
|
||||
t.Errorf("there should be no error, but now err:%s", err)
|
||||
} else {
|
||||
fmt.Printf("Content:%s\n", content)
|
||||
}
|
||||
|
||||
DeleteFile(fileName)
|
||||
}
|
||||
|
||||
func TestGetFileList(t *testing.T) {
|
||||
path := GetCurrentPath()
|
||||
fmt.Printf("CurrPath:%s\n", path)
|
||||
|
||||
fileName1 := "2017-09-12-12.txt"
|
||||
fileName2 := "2017-09-12-13.txt"
|
||||
fileName3 := "2017-09-12-14.txt"
|
||||
fileName4 := "2017-09-12.tar.bz2"
|
||||
|
||||
seperator := "\\"
|
||||
if runtime.GOOS != "windows" {
|
||||
seperator = "/"
|
||||
}
|
||||
|
||||
filePath1 := fmt.Sprintf("%s%s%s", path, seperator, fileName1)
|
||||
filePath2 := fmt.Sprintf("%s%s%s", path, seperator, fileName2)
|
||||
filePath3 := fmt.Sprintf("%s%s%s", path, seperator, fileName3)
|
||||
filePath4 := fmt.Sprintf("%s%s%s", path, seperator, fileName4)
|
||||
|
||||
if err := WriteFile(path, fileName1, true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
if err := WriteFile(path, fileName2, true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
if err := WriteFile(path, fileName3, true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
if err := WriteFile(path, fileName4, true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
|
||||
fileList, err := GetFileList(path)
|
||||
if err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
if fileList[0] != filePath1 {
|
||||
t.Errorf("Expected:%s, now got:%s", filePath1, fileList[0])
|
||||
}
|
||||
if fileList[1] != filePath2 {
|
||||
t.Errorf("Expected:%s, now got:%s", filePath2, fileList[1])
|
||||
}
|
||||
if fileList[2] != filePath3 {
|
||||
t.Errorf("Expected:%s, now got:%s", filePath3, fileList[2])
|
||||
}
|
||||
if fileList[3] != filePath4 {
|
||||
t.Errorf("Expected:%s, now got:%s", filePath4, fileList[3])
|
||||
}
|
||||
|
||||
DeleteFile(filePath1)
|
||||
DeleteFile(filePath2)
|
||||
DeleteFile(filePath3)
|
||||
DeleteFile(filePath4)
|
||||
}
|
||||
|
||||
func TestGetFileList2(t *testing.T) {
|
||||
path := GetCurrentPath()
|
||||
fmt.Printf("CurrPath:%s\n", path)
|
||||
|
||||
fileName1 := "2017-09-12-12.txt"
|
||||
fileName2 := "2017-09-12-13.txt"
|
||||
fileName3 := "2017-09-12-14.txt"
|
||||
fileName4 := "2017-09-12.tar.bz2"
|
||||
|
||||
seperator := "\\"
|
||||
if runtime.GOOS != "windows" {
|
||||
seperator = "/"
|
||||
}
|
||||
|
||||
filePath1 := fmt.Sprintf("%s%s%s", path, seperator, fileName1)
|
||||
filePath2 := fmt.Sprintf("%s%s%s", path, seperator, fileName2)
|
||||
filePath3 := fmt.Sprintf("%s%s%s", path, seperator, fileName3)
|
||||
filePath4 := fmt.Sprintf("%s%s%s", path, seperator, fileName4)
|
||||
|
||||
if err := WriteFile(path, fileName1, true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
if err := WriteFile(path, fileName2, true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
if err := WriteFile(path, fileName3, true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
if err := WriteFile(path, fileName4, true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
|
||||
fileList, err := GetFileList2(path, "2017-09-12", "txt")
|
||||
if err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
fmt.Printf("fileList:%v\n", fileList)
|
||||
if fileList[0] != filePath1 {
|
||||
t.Errorf("Expected:%s, now got:%s", filePath1, fileList[0])
|
||||
}
|
||||
if fileList[1] != filePath2 {
|
||||
t.Errorf("Expected:%s, now got:%s", filePath2, fileList[1])
|
||||
}
|
||||
if fileList[2] != filePath3 {
|
||||
t.Errorf("Expected:%s, now got:%s", filePath3, fileList[2])
|
||||
}
|
||||
|
||||
fileList2, err := GetFileList2(path, "2017-09-12", "tar.bz2")
|
||||
if err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
fmt.Printf("fileList2:%v\n", fileList2)
|
||||
if fileList2[0] != filePath4 {
|
||||
t.Errorf("Expected:%s, now got:%s", filePath4, fileList2[0])
|
||||
}
|
||||
|
||||
DeleteFile(filePath1)
|
||||
DeleteFile(filePath2)
|
||||
DeleteFile(filePath3)
|
||||
DeleteFile(filePath4)
|
||||
}
|
||||
|
||||
func TestReadFileLineByLine(t *testing.T) {
|
||||
path := GetCurrentPath()
|
||||
fmt.Printf("CurrPath:%s\n", path)
|
||||
|
||||
fileName := fmt.Sprintf("%s/%s", path, "test.txt")
|
||||
if err := WriteFile(path, "test.txt", true, "first line\n"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
if err := WriteFile(path, "test.txt", true, "second line\n"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
|
||||
expectedFirstLine := "first line"
|
||||
expectedSecondLine := "second line"
|
||||
lineList, err := ReadFileLineByLine(fileName)
|
||||
if err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
if lineList[0] != expectedFirstLine {
|
||||
t.Errorf("Expected:%s, but now got:%s", expectedFirstLine, lineList[0])
|
||||
}
|
||||
if lineList[1] != expectedSecondLine {
|
||||
t.Errorf("Expected:%s, but now got:%s", expectedSecondLine, lineList[1])
|
||||
}
|
||||
|
||||
if err := DeleteFile(fileName); err != nil {
|
||||
t.Errorf("There should be no error, but now it has:%s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReadFileContent(t *testing.T) {
|
||||
path := GetCurrentPath()
|
||||
fmt.Printf("CurrPath:%s\n", path)
|
||||
|
||||
fileName := fmt.Sprintf("%s/%s", path, "test.txt")
|
||||
if err := WriteFile(path, "test.txt", true, "first line\n"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
if err := WriteFile(path, "test.txt", true, "second line\n"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
|
||||
expectedContent := "first line\nsecond line\n"
|
||||
if content, err := ReadFileContent(fileName); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
} else if content != expectedContent {
|
||||
t.Errorf("Expected:%s, but now got:%s", expectedContent, content)
|
||||
}
|
||||
|
||||
if err := DeleteFile(fileName); err != nil {
|
||||
t.Errorf("There should be no error, but now it has:%s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteFile(t *testing.T) {
|
||||
path := GetCurrentPath()
|
||||
fmt.Printf("CurrPath:%s\n", path)
|
||||
|
||||
fileName := fmt.Sprintf("%s/%s", path, "test.txt")
|
||||
if err := WriteFile(path, "test.txt", true, "first line"); err != nil {
|
||||
t.Errorf("there should be no error, but now it is:%s", err)
|
||||
}
|
||||
|
||||
if err := DeleteFile(fileName); err != nil {
|
||||
t.Errorf("There should be no error, but now it has:%s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReadWriteSimultaneously(t *testing.T) {
|
||||
path := GetCurrentPath()
|
||||
fmt.Printf("CurrPath:%s\n", path)
|
||||
|
||||
fileName := fmt.Sprintf("%s/%s", path, "test.txt")
|
||||
|
||||
file1, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, os.ModePerm|os.ModeTemporary)
|
||||
if err != nil {
|
||||
t.Errorf("1:there should be no err, but now err:%s", err)
|
||||
}
|
||||
|
||||
// for i := 0; i < 10; i++ {
|
||||
// file1.WriteString(fmt.Sprintf("line %d\n", i))
|
||||
// }
|
||||
|
||||
go func() {
|
||||
for i := 0; i < 10; i++ {
|
||||
file1.WriteString(fmt.Sprintf("line %d\n", i))
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
}()
|
||||
|
||||
file2, err := os.OpenFile(fileName, os.O_RDONLY, os.ModePerm|os.ModeTemporary)
|
||||
if err != nil {
|
||||
t.Errorf("2:there should be no err, but now err:%s", err)
|
||||
}
|
||||
|
||||
go func() {
|
||||
offset := 0
|
||||
|
||||
// 读取文件
|
||||
buf := bufio.NewReader(file2)
|
||||
|
||||
for {
|
||||
// 按行读取
|
||||
line, _, err2 := buf.ReadLine()
|
||||
if err2 == io.EOF {
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
continue
|
||||
}
|
||||
|
||||
if len(line) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
//将byte[]转换为string,并添加到列表中
|
||||
fmt.Printf("line %d:%s\n", offset, string(line))
|
||||
|
||||
offset += 1
|
||||
if offset >= 10 {
|
||||
break
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
time.Sleep(30 * time.Second)
|
||||
|
||||
fmt.Println("end")
|
||||
}
|
||||
Reference in New Issue
Block a user