wap网站如何制作/网络营销手段有哪些

wap网站如何制作,网络营销手段有哪些,网页设计服务,全球疫情实时动态查询os io 判断文件是否存在 func fileExist(filePath string) (bool, error) {_, err : os.Stat(filePath)if err nil {return true, nil}if os.IsNotExist(err) {return false, nil}return false, &CheckFileExistError{filePath} } 读取文件内容 func readFileContext(…

os io

判断文件是否存在

func fileExist(filePath string) (bool, error) {_, err := os.Stat(filePath)if err == nil {return true, nil}if os.IsNotExist(err) {return false, nil}return false, &CheckFileExistError{filePath}
}

读取文件内容

func readFileContext(file *os.File) (string, error) {if file == nil {return "", nil}var buf [1024]bytevar content []bytefor {n, err := file.Read(buf[:])if err == io.EOF {//结尾break} else if err != nil {log.Println("Read file error", file.Name())return "", err}content = append(content, buf[:n]...)}return string(content), nil
}

创建文件&写入文件内容

// 如果不存在 则创建
if !exist {log.Println("create file:", filePath)newFile, err := os.Create(filePath)if err != nil {log.Panicln(err.Error())}// 写入文件newFile.WriteString("Hello word !!!\n")newFile.Write([]byte("happy every day\n"))newFile.Close()
}

打开文件

// 打开这个文件
file1, err := os.Open(filePath)
if err != nil {log.Panicln(err.Error())
}

关闭和删除文件

// 删除前关闭文件,否则报错
file1.Close()// 删除文件
stat1, _ := file1.Stat()
if stat1 != nil {log.Println("file is not closed")
}
err = os.Remove(filePath)
if err != nil {log.Println("remove file error", filePath, err.Error())
}
log.Println("remove file success", filePath)

copy文件

func copyFile(filePath1 string, filePath2 string) error {exist, err := fileExist(filePath1)if err != nil {return err}if !exist {log.Println("file1 must exist ")return nil}file1, err := os.Open(filePath1)if err != nil {log.Println("open file1 error")return err}defer file1.Close()// 如果存在则删除exist, err = fileExist(filePath2)if err != nil {return err}if exist {os.Remove(filePath2)}file2, err := os.Create(filePath2)if err != nil {log.Println("create file2 error")return err}defer file2.Close()var buffer [1024]bytefor {n, err := file1.Read(buffer[:])if err == io.EOF {log.Println("copy complete")break}if err != nil {log.Println("copy error")return err}file2.Write(buffer[:n])}return nil
}

综合示例

package mainimport ("io""log""os"
)type CheckFileExistError struct {FilePath string
}func (err CheckFileExistError) Error() string {return "Check File[" + err.FilePath + "] Exist Error"
}func fileExist(filePath string) (bool, error) {_, err := os.Stat(filePath)if err == nil {return true, nil}if os.IsNotExist(err) {return false, nil}return false, &CheckFileExistError{filePath}
}func readFileContext(file *os.File) (string, error) {if file == nil {return "", nil}var buf [1024]bytevar content []bytefor {n, err := file.Read(buf[:])if err == io.EOF {//结尾break} else if err != nil {log.Println("Read file error", file.Name())return "", err}content = append(content, buf[:n]...)}return string(content), nil
}func copyFile(filePath1 string, filePath2 string) error {exist, err := fileExist(filePath1)if err != nil {return err}if !exist {log.Println("file1 must exist ")return nil}file1, err := os.Open(filePath1)if err != nil {log.Println("open file1 error")return err}defer file1.Close()// 如果存在则删除exist, err = fileExist(filePath2)if err != nil {return err}if exist {os.Remove(filePath2)}file2, err := os.Create(filePath2)if err != nil {log.Println("create file2 error")return err}defer file2.Close()var buffer [1024]bytefor {n, err := file1.Read(buffer[:])if err == io.EOF {log.Println("copy complete")break}if err != nil {log.Println("copy error")return err}file2.Write(buffer[:n])}return nil
}func main() {log.Println("main ...")filePath := "./test.txt"filePath2 := "./test2.txt"exist, err := fileExist(filePath)log.Println("file ", filePath, "exist:", exist)if err != nil {log.Println(err.Error())}// 如果不存在 则创建if !exist {log.Println("create file:", filePath)newFile, err := os.Create(filePath)if err != nil {log.Panicln(err.Error())}// 写入文件newFile.WriteString("Hello word !!!\n")newFile.Write([]byte("happy every day\n"))newFile.Close()}// 打开这个文件file1, err := os.Open(filePath)if err != nil {log.Panicln(err.Error())}// 读取文件原始内容context, err := readFileContext(file1)if err != nil {log.Panicln(err.Error())}log.Println("context:", context)// 删除前关闭文件,否则报错file1.Close()// copy文件copyFile(filePath, filePath2)// 删除文件stat1, _ := file1.Stat()if stat1 != nil {log.Println("file is not closed")}err = os.Remove(filePath)if err != nil {log.Println("remove file error", filePath, err.Error())}log.Println("remove file success", filePath)log.Println("success ..")
}

bufio

bufio包实现了带缓冲区的读写,是对文件读写的封装

bufio缓冲写数据

模式       含义

os.O_WRONLY     只写

os.O_CREATE      创建文件

os.O_RDONLY      只读

os.O_RDWR   读写

os.O_TRUNC 清空

os.O_APPEND      追加

package mainimport ("bufio""io""log""os"
)// 写文件
func write(filePath string) {// 参数2:打开模式,所有模式d都在上面// 参数3是权限控制// w写 r读 x执行   w  2   r  4   x  1file, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY, 0666)if err != nil {return}defer file.Close()// 获取writer对象writer := bufio.NewWriter(file)for i := 0; i < 10; i++ {writer.WriteString("hello\n")}// 刷新缓冲区,强制写出writer.Flush()
}// 读取文件
func read(filePath string) string {file, err := os.Open(filePath)if err != nil {return ""}defer file.Close()var content []bytereader := bufio.NewReader(file)for {line, _, err := reader.ReadLine()if err == io.EOF {break}if err != nil {return ""}content = append(content, []byte(string(line)+"\n")...)}return string(content)
}func main() {log.Println("main ...")filePath := "./test1.txt"write(filePath)content := read(filePath)log.Println(content)log.Println("success ..")
}

ioutil

package mainimport ("io/ioutil""log"
)func main() {log.Println("main ...")filePath := "./test1.txt"// 写文件err := ioutil.WriteFile(filePath, []byte("hello word"), 0666)if err != nil {log.Println(err)return}// 读取文件content, err := ioutil.ReadFile(filePath)if err != nil {log.Println(err)return}log.Println(string(content))log.Println("success ..")
}

控制台输入输出

终端其实是一个文件,相关实例如下:

os.Stdin:标准输入的文件实例,类型为*File

os.Stdout:标准输出的文件实例,类型为*File

os.Stderr:标准错误输出的文件实例,类型为*File

以文件的方式操作终端:

package mainimport ("log""os"
)func main() {log.Println("main ...")var buf [16]byte// 从控制台读取一行数据os.Stdin.Read(buf[:])log.Println("read context:", string(buf[:]))// 写入到控制台os.Stdout.WriteString("hello word\n")log.Println("success ..")
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/70337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rs485协议、电路详解(保姆级)

起源 RS-485即Recommended Standard 485 协议的简写。1983年被电子工业协会(EIA)批准为一种通讯接口标准. 数据在通信双方之间传输&#xff0c;本质是传输物理的电平&#xff0c;比方说传输5V的电压 -1V的电压信号&#xff0c;这些物理信号在传输过程中会受到很多干扰&#x…

JavaWeb-Tomcat服务器

文章目录 Web服务器存在的意义关于Web服务器软件Tomcat服务器简介安装Tomcat服务器Tomcat服务器源文件解析配置Tomcat的环境变量启动Tomcat服务器一个最简单的webapp(不涉及Java) Web服务器存在的意义 我们之前介绍过Web服务器进行通信的原理, 但是我们当时忘记了一点, 服务器…

视觉分析之边缘检测算法

9.1 Roberts算子 Roberts算子又称为交叉微分算法&#xff0c;是基于交叉差分的梯度算法&#xff0c;通过局部差分计算检测边缘线条。 常用来处理具有陡峭的低噪声图像&#xff0c;当图像边缘接近于正45度或负45度时&#xff0c;该算法处理效果更理想。 其缺点是对边缘的定位…

OpenCV形态学操作

1.1. 形态学操作介绍 初识&#xff1a; 形态学操作是一种基于图像形状的处理方法&#xff0c;主要用于分析和处理图像中的几何结构。其核心是通过结构元素&#xff08;卷积核&#xff09;对图像进行扫描和操作&#xff0c;从而改变图像的形状和特征。例如&#xff1a; 腐蚀&…

pyside6学习专栏(三):自定义QLabel标签扩展类QLabelEx

标签是界面设计中最常用的控件&#xff0c;本文演示了如何基于PySide6的QLabex控件类扩展定义QLabelEX类&#xff0c;以实现更少的编码完成各种图像、彩色文本、动画的加载和显示&#xff0c;丰富界面显示 本示例演示了QLabel和其扩展类QLabelEx分别显示文本、图像、动画的使用…

从0到1:固件分析

固件分析 0x01 固件提取 1、从厂商官网下载 例如D-link的固件&#xff1a; https://support.dlink.com/resource/products/ 2、代理或镜像设备更新时的流量 发起中间人攻击MITM #启用IP转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward#配置iptables&#xff0c;将目…

后端开发:开启技术世界的新大门

在互联网的广阔天地中&#xff0c;后端开发宛如一座大厦的基石&#xff0c;虽不直接与用户 “面对面” 交流&#xff0c;却默默地支撑着整个互联网产品的稳定运行。它是服务器端编程的核心领域&#xff0c;负责处理数据、执行业务逻辑以及与数据库和其他后端服务进行交互。在当…

银河麒麟系统安装mysql5.7【亲测可行】

一、安装环境 cpu&#xff1a;I5-10代&#xff1b; 主板&#xff1a;华硕&#xff1b; OS&#xff1a;银河麒麟V10&#xff08;SP1&#xff09;未激活 架构&#xff1a;Linux 5.10.0-9-generic x86_64 GNU/Linux mysql版本&#xff1a;mysql-5.7.34-linux-glibc2.12-x86_64.ta…

从零开始学习PX4源码9(部署px4源码到gitee)

目录 文章目录 目录摘要1.gitee上创建仓库1.1 gitee上创建仓库PX4代码仓库1.2 gitee上创建子仓库2.固件在gitee部署过程2.1下载固件到本地2.2切换本地分支2.3修改.gitmodules内容2.4同步子模块仓库地址2.5同步子模块仓库地址更新(下载)子模块3.一级子模块和二级子模块的映射关…

QT 读写锁

一、概述 1、读写锁是一种线程同步机制&#xff0c;用于解决多线程环境下的读写竞争问题。 2、读写锁允许多个线程同时获取读锁&#xff08;共享访问&#xff09;&#xff0c;但只允许一个线程获取写锁&#xff08;独占访问&#xff09;。 3、这种机制可以提高并发性能&…

二叉树(数据结构)

二叉树 二叉树也是用过递归定义的结构 先序遍历又称前序遍历 ​​ ​​ 按照先序遍历的方法去手算处理这个二叉树 ​​ 先A B C 再 A B D E C&#xff08;也就是把B换成BDE再放进去&#xff09; 再 A B D E C F 看这个插入的方法要掌握像二叉树这样向一个…

机器学习笔记——常用损失函数

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本笔记介绍机器学习中常见的损失函数和代价函数&#xff0c;各函数的使用场景。 热门专栏 机器学习 机器学习笔记合集 深度学习 深度学习笔记合集 文章目录 热门…

#渗透测试#批量漏洞挖掘#畅捷通T+SQL注入漏洞

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 一、漏洞全景解析 1. 高危漏洞案例库 2.…

nvm安装、管理node多版本以及配置环境变量【保姆级教程】

引言 不同的项目运行时可能需要不同的node版本才可以运行&#xff0c;由于来回进行卸载不同版本的node比较麻烦&#xff1b;所以需要使用node工程多版本管理。 本人在配置时&#xff0c;通过网络搜索教程&#xff0c;由于文章时间过老&#xff0c;或者文章的互相拷贝导致配置时…

框架--Mybatis3

一.特殊符号处理 < < > > " &quot; &apos; & &amp; 除了可以使用上述转义字符外&#xff0c;还可以使<![CDATA[ ]]>用来包裹特殊字符。 二.mybatis 一级缓存二级缓存 1.为什么缓存 缓存&#xff1a;数据缓存&#xf…

纯新手教程:用llama.cpp本地部署DeepSeek蒸馏模型

0. 前言 llama.cpp是一个基于纯C/C实现的高性能大语言模型推理引擎&#xff0c;专为优化本地及云端部署而设计。其核心目标在于通过底层硬件加速和量化技术&#xff0c;实现在多样化硬件平台上的高效推理&#xff0c;同时保持低资源占用与易用性。 最近DeepSeek太火了&#x…

Netty入门详解

引言 Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用框架&#xff0c;用于快速开发可维护的高性能网络服务器和客户端。它提供了一组丰富的 API&#xff0c;使得开发人员能够轻松地处理各种网络协议&#xff0c;如 TCP、UDP 等&#xff0c;并且支持多种编解码方式&a…

物联网简介集合

物联网&#xff08;IoT&#xff09;指的是物理设备&#xff08;如电器和车辆&#xff09;之间的互联互通。这些设备嵌入了软件、传感器和连接功能&#xff0c;使其能够相互连接并交换数据。这项技术实现了从庞大的设备网络中收集和共享数据&#xff0c;为打造更高效、自动化的系…

【分布式理论11】分布式协同之分布式事务(一个应用操作多个资源):从刚性事务到柔性事务的演进

文章目录 一. 什么是分布式事务&#xff1f;二. 分布式事务的挑战三. 事务的ACID特性四. CAP理论与BASE理论1. CAP理论1.1. 三大特性1.2. 三者不能兼得 2. BASE理论 五. 分布式事务解决方案1. 两阶段提交&#xff08;2PC&#xff09;2. TCC&#xff08;Try-Confirm-Cancel&…

【Quest开发】全身跟踪

软件&#xff1a;Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件&#xff1a;Meta Quest3 最终效果&#xff1a;能像meta的操作室沉浸场景一样根据头盔移动来推断用户姿势&#xff0c;实现走路、蹲下、手势匹配等功能 需要借助UnityMovement这个包 GitHub …