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]