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-用户信息和系统文件/目录的更多相关文章

  1. 如何在HPUX的终端提示符前显示当前登录用户信息和所在目录

    修改/etc/default/profile文件,在最后加上如下内容: case $LOGNAME in     'root')     PS1="$LOGNAME@$(hostname): ...

  2. Redis 笔记与总结7 PHP + Redis 信息管理系统(用户信息的增删改查)

    1. PHP 连接 Redis 访问 redis 官方网站的 client 栏目:http://www.redis.io/clients#php,可以获取 redis 的 php 扩展. 其中 php ...

  3. finger 工具:用来查询用户信息,侧重用户家目录、登录SHELL等

    finger 工具侧重于用户信息的查询:查询的内容包括用户名(也被称为登录名Login),家目录,用户真实的名字(Name)... ... 办公地址.办公电话:也包括登录终端.写状态.空闭时间等: 我 ...

  4. Asp.NET MVC 使用 SignalR 实现推送功能二(Hubs 在线聊天室 获取保存用户信息)

    简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现 ...

  5. spring security LDAP获取用户信息

    很多企业内部使用LDAP保存用户信息,这章我们来看一下如何从LDAP中获取Spring Security所需的用户信息. 首先在pom.xml中添加ldap所需的依赖. <dependency& ...

  6. Discuz!NT3.6与网站整合(操作用户信息)解决方案

    因为网站要加个论坛,所以就用到了Discuz!NT3.6. 可惜目前官方论坛已经关闭,只有3.6版本的有源码,3.9的没有源码,不好操作,下载地址: http://download.comsenz.c ...

  7. SAMBA用户访问指定的目录

    指定某个用户访问一个特定的共享文件夹sfx 用户可以访问abc目录 别的用户不可以访问abc目录 先创建一个用户命令useradd sfx 创建一个smbpasswd用户 在创建这个用户时要先创建一个 ...

  8. CAS学习笔记(三)—— SERVER登录后用户信息的返回

    一旦CAS SERVER验证成功后,我们就会跳转到客户端中去.跳转到客户端去后,大家想一想,客户端总要获取用户信息吧,不然客户端是怎么知道登录的是哪个用户.那么客户端要怎么获取用户信息呢? 其实验证成 ...

  9. 关于Spring Security 3获取用户信息的问题

    标签: spring security 3标签获取用户信息 2013-01-05 10:40 5342人阅读 评论(0) 收藏 举报  分类: Spring(25) java(70) 前端(7)    ...

随机推荐

  1. R语言-laohuji

    项目三-tiger机 说明:每玩一次老ji游戏需要花费一元钱.钻石符号(DD)可以百搭,并且能够将最终的金额加倍. 任务分解: 任务分解的步骤: 将复杂的任务分解为一些简单的子任务: 使用实例: 用通 ...

  2. VS 2017 + OpenCV + Spinnaker SDK(PointGrey) 配置

    1. OpenCV 配置 1.1 下载 opencv 源码,并将其添加至环境变量 D:\opencv4.1\build\x64\vc15\bin 注:vs2015 选 vc14,vs2017 选 vc ...

  3. 开发SSO单点登录需要注意的问题

      一.单点登录系统开发需要注意的问题     1.单点登录系统需要支持jsonp请求?    单点登录系统主要是向其他系统提供用户身份验证服务,因此需要提供对外接口,而外部系统通过接口访问时,必然涉 ...

  4. 史上最全的用Python操控手机APP攻略!建议收藏!

    ​最近经常看到用Python操作手机APP的项目,例如抖音.闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境.至于什么是ADB,很多大神都讲过,只是写得比较专业,我等菜鸟看完还是云里雾里. ​ ...

  5. angularjs ng-if妙用,ng-if解决父子组件异步传值

     壹 ❀ 引 angularjs开发中,组件件相互通信传值是再普遍不过的操作了,比如我在父作用域中获取了一个数据,想要传递给子组件使用,做简单的做法就是通过scope传递,比如这样: <body ...

  6. pycharm问题解析(connecting to console)

    1. 场景描述 以前一直用的anaconda3,临时下载了demo用的python2,就下载anaconda2安装了下,测试过后,发现pycharm中以前的项目跑不起来了,一直报:connecting ...

  7. gitlab的安装配置与简单使用

    安装 gitlab,建议系统内存 6G ,不然会报错. 一.如何安装 gitlab 下载 gitlab 的 RPM 包 https://packages.gitlab.com/gitlab/gitla ...

  8. PHP echo一个对象报语法错误,为什么?

    为什么直接echo一个对象就会报语法错误,而如果这个对象实现了__toString方法后就可以直接输出呢? 原因是echo本来可以打印一个对象,而且也实现了这个接口,但是PHP对其做了个限制,只有实现 ...

  9. 给 K8s API “做减法”:阿里巴巴云原生应用管理的挑战和实践

    作者 | 孙健波(天元)  阿里巴巴技术专家本文整理自 11 月 21 日社群分享,每月 2 场高质量分享,点击加入社群. 早在 2011 年,阿里巴巴内部便开始了应用容器化,当时最开始是基于 LXC ...

  10. -ffast-math编译选项作用

    https://stackoverflow.com/questions/7420665/what-does-gccs-ffast-math-actually-do