7.Go-用户信息和系统文件目录
7.1.获取操作系统用户信息
(1)os包及子包功能
- os/exec包,负责执行外部命令
- os/singal对输入信息的访问
- os/user通过名次或ID 查询用户账号
(2)在os/user中提供了User结构体,表示操作系统用户
- Uid用户id
- Gid所属组id
- Username用户名
- Name所属组名
- HomeDir用户对应文件夹路劲
(3)在os/user中的Group表示用户所属组
- Gid组的id
- Name组的名称
//Learn_Go/main.go
package main import (
"fmt"
"os/user"
) func main() {
u,error := user.Current() //获取当前用户
if error != nil{
fmt.Println(error)
return
}
fmt.Println(u.Uid)
fmt.Println(u.Name)
fmt.Println(u.Gid)
fmt.Println(u.HomeDir)
fmt.Println(u.Username)
}
7.2.系统文件和目录
(1)Go语言标准库中提供了两种创建文件夹的方式
MkDir:要求文件夹不存在且父目录必须存在,才能创建
//Learn_Go/main.go
package main import (
"fmt"
"os"
) func main() {
err := os.Mkdir("D:/godir", os.ModeDir)
if err != nil{
fmt.Println("文件夹创建失败", err)
return
}
fmt.Println("文件夹创建成功")
}
MkDirAll:如果文件夹已经存在,不报错,保留原文件,如果父目录不存在帮助创建
//Learn_Go/main.go
package main import (
"fmt"
"os"
) func main() {
err := os.MkdirAll("D:/godir/a/b", os.ModeDir)
if err != nil{
fmt.Println("文件夹创建失败", err)
return
}
fmt.Println("文件夹创建成功")
}
(2)创建空文件
创建文件是要求文件目录必须已经存在
如果文件已经存在,则会创建一个空文件覆盖之前的文件
//Learn_Go/main.go
package main import (
"fmt"
"os"
) func main() {
f , err := os.Create("D:/godir/test.txt")
if err != nil{
fmt.Println("文件夹创建失败", err)
return
}
fmt.Println("文件夹创建成功", f)
}
(3)重命名文件或文件夹
第一个参数:原文件名称,要求此路径是必须存在的
第二个参数:新文件夹名称
//Learn_Go/main.go
package main import (
"fmt"
"os"
) func main() {
err := os.Rename("D:/godir","D:/godir11")
if err != nil{
fmt.Println("重命名失败", err)
return
}
fmt.Println("重命名成功")
}
重命名文件
//Learn_Go/main.go
package main import (
"fmt"
"os"
) func main() {
err := os.Rename("D:/godir11/test.txt","D:/godir11/test11.txt")
if err != nil{
fmt.Println("重命名失败", err)
return
}
fmt.Println("重命名成功")
}
(4)获取文件夹信息
//Learn_Go/main.go
package main import (
"fmt"
"os"
) func main() {
f,err := os.Open("D:/godir11/test11.txt")
if err != nil{
fmt.Println("文件获取失败", err)
return
}
fileInfo,err := f.Stat()
if err != nil{
fmt.Println("文件信息获取失败",err)
return
}
fmt.Println(fileInfo.Size()) //文件大小
fmt.Println(fileInfo.ModTime()) //文件最后修改时间
fmt.Println(fileInfo.Mode()) //文件模式 -rw-rw-rw-
fmt.Println(fileInfo.IsDir()) //是否是目录 false
fmt.Println(fileInfo.Name()) //文件名 test11.txt
}
(5)删除文件或文件夹
Remove:删除的内容只能是一个文件或空文件夹且必须存在
//Learn_Go/main.go
package main import (
"fmt"
"os"
) func main() {
err := os.Remove("D:/godir11")
if err != nil{
fmt.Println("删除失败", err)
return
}
fmt.Println("删除成功")
} //结果
删除失败 remove D:/godir11: The directory is not empty.
RemoveAll
- 只要文件夹存在,删除文件夹
- 无论文件是否有内容都会删除
- 如果是文件则删除文件
//Learn_Go/main.go
package main import (
"fmt"
"os"
) func main() {
err := os.RemoveAll("D:/godir11")
if err != nil{
fmt.Println("删除失败", err)
return
}
fmt.Println("删除成功")
} //结果
删除成功
7.Go-用户信息和系统文件目录的更多相关文章
- 用户信息查询系统_daoImpl
package com.hopetesting.dao.impl;import com.hopetesting.dao.UserDao;import com.hopetesting.domain.Us ...
- Linux下用于查看系统当前登录用户信息 w命令
作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动.有些时候,你甚至需要知道他(她)们正在做什么.本文为我们总结了4种查看系统用户信息(通过编号(ID))的方法. 1. 使用w ...
- Linux下用于查看系统当前登录用户信息的4种方法
1. 使用w命令查看登录用户正在使用的进程信息 w命令用于显示已经登录系统的用户的名称,以及他们正在做的事.该命令所使用的信息来源于/var/run/utmp文件.w命令输出的信息包括: 用户名称 用 ...
- linux 下如何查看和踢除正在登陆的其它用户 ==>Linux下用于查看系统当前登录用户信息的4种方法
在linux系统中用pkill命令踢出在线登录用户 由于linux服务器允许多用户登录,公司很多人知道密码,工作造成一定的障碍 所以需要有时踢出指定的用户 1/#who 查出当前有那些终端登录(用 ...
- “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第四篇(用户管理功能的实现)
“MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第四篇(用户管理功能的实现) 一.前三篇的内容是否对您有帮助呢?如果有的话,请您继续关注这篇吧,这篇主要是实现”用户管理“的 ...
- Linux显示目前登入系统的用户信息
Linux显示目前登入系统的用户信息 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ who youhaidong :0 2015-01-26 22:43 (: ...
- CAS 单点登录4.24版本 登录调用其它系统并且返回客户端用其它的用户信息改造
1.登录调用其它系统.修改deployerConfigContext.xml <?xml version="1.0" encoding="UTF-8"?& ...
- C#中关于系统用户信息持久化(接上文)
首先传几张效果图描述一下功能: 经过上文用户名和密码的验证后,就到了添加用户这一步,登陆后的用户可以添加新的用户,被添加的用户可以登陆系统. 这里会用到C#中的“正则表达式”对用户名格式进行判断,以及 ...
- UWP 应用获取各类系统、用户信息 (2) - 商店授权信息、零售演示模式信息、广告 ID、EAS 设备信息、硬件识别信息、移动网络信息
应用开发中,开发者时常需要获取一些系统.用户信息用于数据统计遥测.问题反馈.用户识别等功能.本文旨在介绍在 Windows UWP 应用中获取一些常用系统.用户信息的方法.示例项目代码可参见 Gith ...
随机推荐
- strip使用
strip作用:去掉空格.以及想要去掉的字符,实例如下: In [42]: import subprocess In [42]: output=subprocess.check_output([&qu ...
- React-Native传值方式之 :DeviceEventEmitter添加监听控制并传值到其他页面
在 native 开发中,我们可以使用广播实现事件的订阅和事件的触发,从而实现不在该页面但是可以调用该页面的方法. 在 React Native 中,我们也可以使用 DeviceEventEmitte ...
- js多元运算
for(var i=1;i<=100;i++){ var f = i%3 == 0, b = i%5 == 0; if(f){ if(b){ console.log("FizzBuzz ...
- 配置文件 "G:\虚拟机列表\Linux001.vmx" 由产品 VMware 创建, 其版本 VMware Workstation 不兼容并且不能使用.
解析: 报这种错误一般是虚拟机文件里声明的VMware版本和真实的VMware版本不一致导致.我们可以手动更改真实VMware版本,或者更改虚拟机文件里声明的VMware版本.以下我们通过更该虚拟机文 ...
- 调用百度api的原理流程
1.为了实现酒店地址的定位 2.使用可视化便捷的百度地图API生成器:设置公司的地址和地图等级 3.设置地图的滚轮.缩放功能 4.获取代码,拷贝到html页面中 5.申请秘钥,在html中引用地图AP ...
- 【神经网络与深度学习】GLOG介绍
一.安装配置 1.简介 google 出的一个C++轻量级日志库,支持以下功能: ◆ 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为: ◆ 严重性分级,根据日志严重性分级记录日志: ◆ 可 ...
- VMware重装:网络适配器驱动安装失败解决办法
参考链接:https://blog.csdn.net/theConqueror/article/details/80449125
- 非常好的一个JS代码(FixedMenu.htm)
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 解决VS2008之后平台(如VS2012/VS2013/VS2015)调试模式下不显示主界面窗口的问题
问题描述:win10操作系统下,VS2008工程调试模式下正常显示主界面窗口,使用VS2012/VS2013/VS2015环境打开VS2008工程,调试模式下应用程序转为后台进程,不显示主界面窗口:另 ...
- 常用PostgreSQL HA(高可用)工具收集
PostgreSQL HA Collect: 1.pgpool 2.Pacemaker + Corosync 3.ecox 4.Patroni: A Template for PostgreSQL H ...