Go ioutil.WriteFile失败,返回“0”;没有这样的文件或目录;
我正在处理一个问题,我无法理解为什么Go ioutil.WriteFile失败,返回“0”;没有这样的文件或目录;,go,Go,我正在处理一个问题,我无法理解为什么ioutils.WriteFile返回一个没有这样的文件或目录错误 完整错误: Error open /data/cdrs/cv2/swoffnet/alliance/NV100708.cdr: no such file or directory alliance目录存在,但WriteFile无法创建该文件,这是因为查看API时,它是 很明显,如果不存在,它将创建一个文件;如果存在,它将截断文件 ls /data/cdrs/cv2/swoffnet/all
ioutils.WriteFile
返回一个没有这样的文件或目录
错误
完整错误:
Error open /data/cdrs/cv2/swoffnet/alliance/NV100708.cdr: no such file or directory
alliance
目录存在,但WriteFile无法创建该文件,这是因为查看API时,它是
很明显,如果不存在,它将创建一个文件;如果存在,它将截断文件
ls /data/cdrs/cv2/swoffnet/alliance
M5V00722.cdr NV100715.cdr NV100720.cdr NV110719.cdr NVX00718.cdr
M5V00722.cdr.old NV100718.cdr NV110715.cdr NV110720.cdr NVX00719.cdr
NV100708.cdr NV100719.cdr NV110718.cdr NVX00715.cdr NVX00720.cdr
对该目录的权限看起来也不错
bash-5.0# ls -l /data/
total 0
drwxrwxrwx 2 1000 1000 0 May 18 12:37 cdrs
bash-5.0# ls -l /data/cdrs/
total 0
drwxrwxrwx 2 1000 1000 0 Jun 30 04:30 cv2
drwxrwxrwx 2 1000 1000 0 Jul 14 06:11 orcawave
-rwxrwxrwx 1 1000 1000 0 Jul 27 13:05 pprof.pprof
drwxrwxrwx 2 1000 1000 0 Jun 8 10:43 sansay
bash-5.0# ls -l /data/cdrs/cv2/
total 0
drwxrwxrwx 2 1000 1000 0 Jul 10 12:32 neoffnet
drwxrwxrwx 2 1000 1000 0 Jun 30 04:30 swoffnet
bash-5.0# ls -l /data/cdrs/cv2/swoffnet/
total 0
drwxrwxrwx 2 1000 1000 0 Jun 30 04:30 alliance
bash-5.0# cd alliance/
bash-5.0# ls -al
total 78944
drwxrwxrwx 2 1000 1000 0 Jun 30 04:30 .
drwxrwxrwx 2 1000 1000 0 Jun 30 04:30 ..
-rwxrwxrwx 1 1000 1000 1760174 Jul 27 13:04 M5V00722.cdr
-rwxrwxrwx 1 1000 1000 1760174 Jul 27 09:24 M5V00722.cdr.old
-rwxrwxrwx 1 1000 1000 0 Jul 9 14:28 NV100708.cdr
-rwxrwxrwx 1 1000 1000 29045104 Jul 15 16:58 NV100715.cdr
-rwxrwxrwx 1 1000 1000 27711200 Jul 20 15:01 NV100718.cdr
-rwxrwxrwx 1 1000 1000 11821920 Jul 20 15:02 NV100719.cdr
-rwxrwxrwx 1 1000 1000 8388160 Jul 20 15:03 NV100720.cdr
-rwxrwxrwx 1 1000 1000 2464 Jul 15 17:11 NV110715.cdr
-rwxrwxrwx 1 1000 1000 1408 Jul 20 15:03 NV110718.cdr
-rwxrwxrwx 1 1000 1000 1408 Jul 20 15:03 NV110719.cdr
-rwxrwxrwx 1 1000 1000 704 Jul 20 15:03 NV110720.cdr
-rwxrwxrwx 1 1000 1000 136224 Jul 15 16:58 NVX00715.cdr
-rwxrwxrwx 1 1000 1000 125840 Jul 20 15:03 NVX00718.cdr
-rwxrwxrwx 1 1000 1000 40128 Jul 20 15:16 NVX00719.cdr
-rwxrwxrwx 1 1000 1000 40128 Jul 20 15:16 NVX00720.cdr
也没有空间问题
bash-5.0# df -h
Filesystem Size Used Available Use% Mounted on
overlay 123.9G 18.0G 105.8G 15% /
tmpfs 64.0M 0 64.0M 0% /dev
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
//mountedarc.file.core.windows.net/cdr-archive-rawcdr-files
1.0T 330.1G 693.9G 32% /data/cdrs
实际文件大小也不大
-rw-rw---- 1 NV1 NV1 31608720 Jul 08 10:55 NV100708.cdr
实际代码如下所示
func (f *FTP) Copy(source, destination string, fileInfo os.FileInfo) error {
log.Debug("Starting copy of file from FTP")
file := fileInfo.(ftpFile)
fullPath := source + file.Name()
log.Debugf("fullPath %q:", fullPath)
ftpResponse, err := f.Client.Retr(fullPath)
if err != nil {
return err
}
defer ftpResponse.Close()
buf, err := ioutil.ReadAll(ftpResponse)
if err != nil {
return err
}
storeFilePath := fmt.Sprintf("%s%s", destination, file.Name())
log.Debugf("storeFilePath %q:", storeFilePath)
err = ioutil.WriteFile(storeFilePath, buf, 0644)
if err != nil {
if _, err2 := os.Stat(destination); os.IsNotExist(err2) {
log.Debugf("%q Folder does not exist.", destination)
} else {
log.Debugf("%q Folder Exist.", destination)
}
log.Debugf("ioutils.WriteFile error %+v:", err)
return err
}
return nil
}
使用注释中提到的%q
选项更新。
日志输出
{"level":"debug","msg":"Starting copy of file from FTP","time":"2020-07-27T15:45:13Z"}
{"level":"debug","msg":"fullPath \"/Download/NV100708.cdr\":","time":"2020-07-27T15:45:13Z"}
{"level":"debug","msg":"storeFilePath \"/data/cdrs/cv2/swoffnet/alliance/NV100708.cdr\":","time":"2020-07-27T15:47:47Z"}
{"level":"debug","msg":"\"/data/cdrs/cv2/swoffnet/alliance/\" Folder Exist.","time":"2020-07-27T15:47:47Z"}
{"level":"debug","msg":"ioutils.WriteFile error open /data/cdrs/cv2/swoffnet/alliance/NV100708.cdr: no such file or directory:","time":"2020-07-27T15:47:47Z"}
{"level":"error","msg":"Error open /data/cdrs/cv2/swoffnet/alliance/NV100708.cdr: no such file or directory","time":"2020-07-27T15:47:47Z"}
距离输出
[pid 12] 07:16:21.065345 write(1, "{\"level\":\"debug\",\"msg\":\"storeFilePath \\\"/data/cdrs/cv2/swoffnet/alliance/NV100708.cdr\\\":\",\"time\":\"2020-07-28T07:16:21Z\"}\n", 121 <unfinished ...>
[pid 6] 07:16:21.065402 nanosleep({tv_sec=0, tv_nsec=20000}, <unfinished ...>
[pid 12] 07:16:21.065746 <... write resumed>) = 121
[pid 6] 07:16:21.065878 <... nanosleep resumed>NULL) = 0
[pid 12] 07:16:21.065915 openat(AT_FDCWD, "/data/cdrs/cv2/swoffnet/alliance/NV100708.cdr", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0644 <unfinished ...>
[pid 6] 07:16:21.065987 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.066195 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.066401 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.066574 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.066831 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.067228 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.067538 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.067832 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.068123 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.068501 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.068884 nanosleep({tv_sec=0, tv_nsec=20000}, NULL) = 0
[pid 6] 07:16:21.077390 epoll_pwait(3, [{EPOLLIN|EPOLLOUT, {u32=112086064, u64=140673175931952}}], 128, 0, NULL, 1) = 1
[pid 6] 07:16:21.077554 futex(0xc000217648, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
[pid 11] 07:16:21.077645 <... futex resumed>) = 0
[pid 6] 07:16:21.077709 <... futex resumed>) = 1
[pid 11] 07:16:21.077777 epoll_pwait(3, <unfinished ...>
[pid 6] 07:16:21.077828 nanosleep({tv_sec=0, tv_nsec=20000}, <unfinished ...>
[pid 11] 07:16:21.078793 <... epoll_pwait resumed>[], 128, 0, NULL, 1) = 0
[pid 6] 07:16:21.078869 <... nanosleep resumed>NULL) = 0
[pid 11] 07:16:21.078898 epoll_pwait(3, <unfinished ...>
[pid 6] 07:16:21.078939 futex(0x14927f8, FUTEX_WAIT_PRIVATE, 0, {tv_sec=2, tv_nsec=803346940} <unfinished ...>
[pid 12] 07:16:21.215531 <... openat resumed>) = -1 ENOENT (No such file or directory)
[pid 12] 07:16:21.215620 futex(0x14927f8, FUTEX_WAKE_PRIVATE, 1) = 1
[pid 6] 07:16:21.215870 <... futex resumed>) = 0
[pid 12] 07:16:21.215906 newfstatat(AT_FDCWD, "/data/cdrs/cv2/swoffnet/alliance/", <unfinished ...>
[pid 6] 07:16:21.215981 nanosleep({tv_sec=0, tv_nsec=20000}, <unfinished ...>
[pid 12] 07:16:21.216031 <... newfstatat resumed>{st_mode=S_IFDIR|0777, st_size=0, ...}, 0) = 0
[pid 6] 07:16:21.216162 <... nanosleep resumed>NULL) = 0
[pid 12] 07:16:21.216214 write(1, "{\"level\":\"info\",\"msg\":\"\\\"/data/cdrs/cv2/swoffnet/alliance/\\\" Folder Exist \\u003cnil\\u003e\",\"time\":\"2020-07-28T07:16:21Z\"}\n", 122 <unfinished ...>
[pid 6] 07:16:21.216272 nanosleep({tv_sec=0, tv_nsec=20000}, <unfinished ...>
[pid 12] 07:16:21.216312 <... write resumed>) = 122
[pid 12] 07:16:21.216410 write(1, "{\"level\":\"debug\",\"msg\":\"ioutils.WriteFile error open /data/cdrs/cv2/swoffnet/alliance/NV100708.cdr: no such file or directory:\",\"time\":\"2020-07-28T07:16:21Z\"}\n", 159 <unfinished ...>
终于运行了这个
strace echo test data > NV100708.cdr
bash: NV100708.cdr: No such file or directory
似乎问题只出在NV100708.cdr
文件名上。也
strace echo test data > NV100708.txt ## success
strace echo test data > NV100708.c ## sucesss
strace echo test data > NV100708.cd ## success
strace echo test data > NV100708.cdr ## error
strace echo test data > NV100708.cdrs ## success
编写了一个基本脚本()来打印名称和符文片段
M5V00722.cdr -- > [77 53 86 48 48 55 50 50 46 99 100 114]
M5V00722.cdr.old -- > [77 53 86 48 48 55 50 50 46 99 100 114 46 111 108 100]
M5V00725.cdr -- > [77 53 86 48 48 55 50 53 46 99 100 114]
M5V00726.cdr -- > [77 53 86 48 48 55 50 54 46 99 100 114]
M5V00727.cdr -- > [77 53 86 48 48 55 50 55 46 99 100 114]
NV100708.cdr -- > [78 86 49 48 48 55 48 56 46 99 100 114]
NV100715.cdr -- > [78 86 49 48 48 55 49 53 46 99 100 114]
NV100718.cdr -- > [78 86 49 48 48 55 49 56 46 99 100 114]
NV100719.cdr -- > [78 86 49 48 48 55 49 57 46 99 100 114]
NV100720.cdr -- > [78 86 49 48 48 55 50 48 46 99 100 114]
NV100725.cdr -- > [78 86 49 48 48 55 50 53 46 99 100 114]
NV100726.cdr -- > [78 86 49 48 48 55 50 54 46 99 100 114]
NV100727.cdr -- > [78 86 49 48 48 55 50 55 46 99 100 114]
NV110715.cdr -- > [78 86 49 49 48 55 49 53 46 99 100 114]
NV110718.cdr -- > [78 86 49 49 48 55 49 56 46 99 100 114]
NV110719.cdr -- > [78 86 49 49 48 55 49 57 46 99 100 114]
NV110720.cdr -- > [78 86 49 49 48 55 50 48 46 99 100 114]
NV110725.cdr -- > [78 86 49 49 48 55 50 53 46 99 100 114]
NV110726.cdr -- > [78 86 49 49 48 55 50 54 46 99 100 114]
NV110727.cdr -- > [78 86 49 49 48 55 50 55 46 99 100 114]
NVX00715.cdr -- > [78 86 88 48 48 55 49 53 46 99 100 114]
NVX00718.cdr -- > [78 86 88 48 48 55 49 56 46 99 100 114]
NVX00719.cdr -- > [78 86 88 48 48 55 49 57 46 99 100 114]
NVX00720.cdr -- > [78 86 88 48 48 55 50 48 46 99 100 114]
NVX00725.cdr -- > [78 86 88 48 48 55 50 53 46 99 100 114]
NVX00726.cdr -- > [78 86 88 48 48 55 50 54 46 99 100 114]
NVX00727.cdr -- > [78 86 88 48 48 55 50 55 46 99 100 114]
XFILE00181.cdr -- > [88 70 73 76 69 48 48 49 56 49 46 99 100 114]
文件NV100708.cdr
存在,并且在文件名中看起来也没有特殊字符
另请参见请检查用户1000是否具有组NV1Well,其安装的驱动器和pod是否在根用户下以
pid
1运行代码,以及所有其他文件是否正确写入,没有任何问题。各位:(a)dir拥有777权限,因此用户无所谓;(b) 权限问题不提供eNont,而是提供EACCESS。@FahimBagar NV1是来自FTP服务器的1000
,它有权/data/cdrs/cv2/swoffnet/alliance/
是一个安装到pod的驱动器,运行上述操作code@Thomas正是我要写的,请检查用户1000是否有组NV1,它安装的驱动器和pod正在根用户下以pid
1运行代码,所有其他文件都正确写入,没有任何问题。各位:(a)dir拥有777权限,因此用户不重要;(b) 权限问题不提供eNont,而是提供EACCESS。@FahimBagar NV1是来自FTP服务器的1000
,它有权/data/cdrs/cv2/swoffnet/alliance/
是一个安装到pod的驱动器,运行上述操作code@Thomas正是我要写的
bash-5.0# strace echo test data > XFILE00181.cdr
execve("/bin/echo", ["echo", "test", "data"], 0x7ffc45798400 /* 108 vars */) = 0
arch_prctl(ARCH_SET_FS, 0x7fd1f5bf3d48) = 0
set_tid_address(0x7fd1f5bf431c) = 155
mprotect(0x7fd1f5bf0000, 4096, PROT_READ) = 0
mprotect(0x564812b28000, 16384, PROT_READ) = 0
getuid() = 0
write(1, "test data\n", 10) = 10
exit_group(0) = ?
+++ exited with 0 +++
strace echo test data > NV100708.txt ## success
strace echo test data > NV100708.c ## sucesss
strace echo test data > NV100708.cd ## success
strace echo test data > NV100708.cdr ## error
strace echo test data > NV100708.cdrs ## success
M5V00722.cdr -- > [77 53 86 48 48 55 50 50 46 99 100 114]
M5V00722.cdr.old -- > [77 53 86 48 48 55 50 50 46 99 100 114 46 111 108 100]
M5V00725.cdr -- > [77 53 86 48 48 55 50 53 46 99 100 114]
M5V00726.cdr -- > [77 53 86 48 48 55 50 54 46 99 100 114]
M5V00727.cdr -- > [77 53 86 48 48 55 50 55 46 99 100 114]
NV100708.cdr -- > [78 86 49 48 48 55 48 56 46 99 100 114]
NV100715.cdr -- > [78 86 49 48 48 55 49 53 46 99 100 114]
NV100718.cdr -- > [78 86 49 48 48 55 49 56 46 99 100 114]
NV100719.cdr -- > [78 86 49 48 48 55 49 57 46 99 100 114]
NV100720.cdr -- > [78 86 49 48 48 55 50 48 46 99 100 114]
NV100725.cdr -- > [78 86 49 48 48 55 50 53 46 99 100 114]
NV100726.cdr -- > [78 86 49 48 48 55 50 54 46 99 100 114]
NV100727.cdr -- > [78 86 49 48 48 55 50 55 46 99 100 114]
NV110715.cdr -- > [78 86 49 49 48 55 49 53 46 99 100 114]
NV110718.cdr -- > [78 86 49 49 48 55 49 56 46 99 100 114]
NV110719.cdr -- > [78 86 49 49 48 55 49 57 46 99 100 114]
NV110720.cdr -- > [78 86 49 49 48 55 50 48 46 99 100 114]
NV110725.cdr -- > [78 86 49 49 48 55 50 53 46 99 100 114]
NV110726.cdr -- > [78 86 49 49 48 55 50 54 46 99 100 114]
NV110727.cdr -- > [78 86 49 49 48 55 50 55 46 99 100 114]
NVX00715.cdr -- > [78 86 88 48 48 55 49 53 46 99 100 114]
NVX00718.cdr -- > [78 86 88 48 48 55 49 56 46 99 100 114]
NVX00719.cdr -- > [78 86 88 48 48 55 49 57 46 99 100 114]
NVX00720.cdr -- > [78 86 88 48 48 55 50 48 46 99 100 114]
NVX00725.cdr -- > [78 86 88 48 48 55 50 53 46 99 100 114]
NVX00726.cdr -- > [78 86 88 48 48 55 50 54 46 99 100 114]
NVX00727.cdr -- > [78 86 88 48 48 55 50 55 46 99 100 114]
XFILE00181.cdr -- > [88 70 73 76 69 48 48 49 56 49 46 99 100 114]