首页 > 其他分享 >golang中的fs.ReadDir

golang中的fs.ReadDir

时间:2023-12-22 13:35:37浏览次数:36  
标签:fs err fmt ReadDir golang fsfile main

平时习惯了./../作为访问目录的路径,但今天使用golang中fs.ReadDir这个函数的时候发现这个习惯是不正确的。

但是常用的命令并没有分很清楚.和./
在这几个命令中使用.或./都可以到达目录下

ls
cd

错误示范

package main

import (
	"fmt"
	"io/fs"
	"os"
)

func main() {
	fsfile := os.DirFS("./")
	dir, err := fs.ReadDir(fsfile, "./")
	if err != nil {
		return
	}
	for _, file := range dir {
		fmt.Println(file.Name())
	}

}

这样写的话err会出现如下提示(奇怪的是在使用1.22.1rc这个版本中,没有任何提示,而在1.21.5版本中会出现提示没有这个目录)

readdir ./: invalid argument

这是正确的代码

package main

import (
	"fmt"
	"io/fs"
	"os"
)

func main() {
	fsfile := os.DirFS(".") //这里使用./或者.都可以
	dir, err := fs.ReadDir(fsfile, ".")
	if err != nil {
		return
	}
	for _, file := range dir {
		fmt.Println(file.Name())
	}

}

后面查询了一下,.和..是表示目录,而./和../表示目录下,应该是这个原因吧

标签:fs,err,fmt,ReadDir,golang,fsfile,main
From: https://www.cnblogs.com/KaiWenRui/p/17921386.html

相关文章

  • 服务器数据恢复-操作系统重装操作失误导致OceanStor存储xfs分区无法访问的数据恢复案
    服务器数据恢复环境:某品牌OceanStorT系列某型号存储+MD1200磁盘柜,组建的raid5磁盘阵列。上层分配了1个lun,安装的linux操作系统,划分两个分区,分区一通过lvm进行扩容,分区二格式化为xfs文件系统。服务器故障:重装系统操作失误导致上层linux操作系统分区改变,XFS文件系统分区由于未知原......
  • Python hdfs 读取文件报错 Temporary failure in name resolution
    问题背景本人按照菜鸟教程的步骤,在windows系统布置了ubuntu虚拟机环境,并使用centos容器镜像搭建出单节点的hdfs服务。欲使用Pythonhdfsapi测试hdfs服务的功能,遂在ubuntu中编写以下代码准备测试fromhdfsimportClientclient=Client(url='http://172.17.0.3:9870',root=......
  • nfs挂载
    ​ NFS(networkfilesystem)NFS是一种基于TCP/IP传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源。也就是说NFS服务端提供共享目录文件挂载在客户端某一个目录文件下,以供客户端去访问和使用​编辑思路:在虚拟机下创建根文......
  • 图(树)的广度优先遍历bfs
    图的广度优先遍历广度优先遍历,就是在遍历时优先考虑遍历的广度,不像深度优先那样一条路径遍历到底,而是一层一层的遍历。由于广度优先是一层一层节点的遍历,在图的边权值都为1的情况下,若我们要求出节点a到节点b的最短路,就可以以a为源点(source)进行广搜,当a第一次搜到b时,其路径一......
  • 图(树)的深度优先遍历dfs
    图的深度优先遍历深度优先,即对于一个图或者树来说,在遍历时优先考虑图或者树的单一路径的深度。示意图如下即深度优先搜索的核心就是对一个路径一直向下搜索,当搜索到头时就回溯到前一状态再寻找别的路深搜问题一般有两种情况,一种是搜索时元素只能用有限次,这需要我们定义一......
  • MT6785/MT6359/MT6360/MT6186/MT6631 UFS_LPDDR4X原理图
    联发科MT6785核心板是一款高度集成的基带平台,集成了蓝牙、FM、WLAN和GPS模块,旨在支持LTE/LTE-A和C2K智能手机应用。这款芯片采用了两个最高频率可达到2.05GHz的ARM®Cortex-A76核心和六个最高频率可达到2.0GHz的ARM®Cortex-A55核心,搭载ArmMali-G76MC4GPU运行速度可提升至......
  • BFS模板
    #classSolution:#defBFS(self,start,target):#q=[]#用一个列表做队列#v=[]#记录走过的路#q.append(start)#把起点放入队列#v.append(start)#加入走过的路#step=0#记录扩散步数#while......
  • 如何设置和配置dfsadmin命令
    Hadoop是一个用于处理大规模数据的开源框架,而dfsadmin命令是Hadoop中用于管理分布式文件系统(DFS)的命令。本文将介绍如何设置和配置dfsadmin命令,以便更好地管理和操作Hadoop的分布式文件系统。1.安装Hadoop:首先,需要安装Hadoop并完成基本的配置。可以从Hadoop官方网站下载最新的稳定......
  • golang简单判断22-65535开发情况
    packagemainimport( "fmt" "net" "sync" "time")funcmain(){ server:="42.51.129.175"//要检查的服务器地址 ports:=make([]int,65535)//要检查的端口范围,从22到65535 fori:=22;i<=65535;i++{ ports......
  • 【go】Go (Golang) 语言-Golang 定时器Timer和Ticker、time.AfterFunc、time.NewTicke
    Golang定时器Timer和TickerGolang定时器包括:一次性定时器(Timer)和周期性定时器(Ticker)。编程中经常会通过timer和ticker、AfterFunc定时器NewTicker是设定每隔多长时间触发的,是连续触发,而计时器NewTimer是等待多长时间触发的,只触发一次,两者是不同的。等待时间函数AfterFunc是......