golang The system cannot find the file specified

Go语言中ioutil.ReadFile()使用错误分析及修正

使用io/ioutil包读取文件时报错:open abi: The system cannot find the file specified.

原因是:ioutil.ReadFile()这个方法需要传入决绝路径的文件名

代码:

abiStr, err := ioutil.ReadFile("abi")
	if err != nil {
		return "", fmt.Errorf("ioutil.ReadFile abi err:%v", err.Error())
	}

ioutil.ReadFile(“abi”)

我之前认为需要读取的abi文件,与代码文件在同一层目录,所以为绝对路径即可。但是经过证实,此处需要写绝对路径,即:

abiStr, err := ioutil.ReadFile("router/nft/erc1155/abi")
	if err != nil {
		return "", fmt.Errorf("ioutil.ReadFile abi err:%v", err.Error())
	}
### 三级标题:Go语言环境配置错误解决方案 在使用Go语言时,如果遇到“The system cannot find the path specified”的错误提示,通常与系统的环境变量配置有关,尤其是在命令行工具中执行Go相关命令时。以下是解决该问题的详细方案。 #### 检查PATH环境变量 确保Go的安装路径已正确添加到系统的PATH环境变量中。Go默认的安装路径为`C:\Go\bin`,如果使用自定义路径,请确认该路径是否存在于PATH中。 1. 打开“系统属性” -> “高级系统设置” -> “环境变量”。 2. 在“系统变量”或“用户变量”中找到PATH,并编辑。 3. 添加Go的`bin`目录路径,例如`C:\Go\bin`。 4. 确认后保存并重启命令提示符或PowerShell。 #### 验证安装路径和文件名拼写 检查Go的安装路径是否正确,并确保路径中的文件名和目录名无误。路径中不应包含空格或特殊字符,避免系统解析路径时出错。 #### 使用绝对路径运行Go命令 在命令行中使用Go的绝对路径执行命令,验证是否仍出现错误。例如: ```shell C:\Go\bin\go version ``` 如果使用绝对路径可以正常执行,则说明问题确实与PATH环境变量有关。 #### 检查用户名编码问题(适用于conda用户) 若用户在使用conda时激活环境出现路径问题,且用户名为中文,可能由于编码设置导致路径解析错误。可在命令行中运行以下命令切换编码为默认中文模式: ```shell chcp 936 ``` 然后尝试重新激活conda环境: ```shell conda activate <env> ``` #### 示例代码:检查Go环境变量 可以通过以下Go命令查看当前的环境变量配置: ```shell go env ``` 若需要修改环境变量,可使用以下命令设置临时环境变量(以`GOPROXY`为例): ```shell go env -w GOPROXY=https://goproxy.io,direct ``` #### 示例表格:常见环境变量及其作用 | 环境变量 | 作用说明 | | --- | --- | | `GOROOT` | Go的安装目录,默认为`C:\Go` | | `GOPATH` | 工作区目录,默认为`C:\Users\<用户名>\go` | | `GOBIN` | Go编译生成的可执行文件存放目录,默认为`%GOPATH%\bin` | #### 检查Go安装完整性 确保Go已正确安装,并且安装过程中没有出现错误。可以从[Go官方网站](https://golang.org/dl/)下载最新版本进行重新安装。 #### 重启命令提示符或系统 在修改环境变量后,重启命令提示符或整个系统,以确保更改生效。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰哥的技术杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值