当前位置: 首页 > news >正文

使用wampserver做响应式网站/加强服务保障 满足群众急需需求

使用wampserver做响应式网站,加强服务保障 满足群众急需需求,用php做电子商务网站,不备案怎么做淘宝客网站吗获取文件列表路径 package _caseimport ("fmt""log""os""strings" )// 获取文件路径 // 源文件目录 const sourceDir "file/"// 目标文件目录 const destDir "det_file/"// 拿到目录下完整的路径 func geFiles…

获取文件列表路径

package _caseimport ("fmt""log""os""strings"
)// 获取文件路径
// 源文件目录
const sourceDir = "file/"// 目标文件目录
const destDir = "det_file/"// 拿到目录下完整的路径
func geFiles(dir string) []string {//读取目录fs, err := os.ReadDir(dir)if err != nil {log.Fatal()}//定义一个list接收我们的文件路径list := make([]string, 0)for _, f := range fs {//如果是个空的文件夹就继续if f.IsDir() {continue}//去掉字符串s中首部以及尾部与字符串cutset中每个相匹配的字符   //Name返回条目所描述的文件(或子目录)的名称。fullName := strings.Trim(dir, "/") + "/" + f.Name()list = append(list, fullName)fmt.Println(list)}return list
}

文件目录拷贝

package _case//文件复制
import ("io""log""os""path"
)// 拷贝目录到目录
func Copy() {list := geFiles(sourceDir)for _, f := range list {//Split 函数将路径从最后一个斜杠后面位置分隔为两个部分( dir 和 file )并返回。如果路径中没有斜杠,//函数返回值 dir 会设为空字符串, file 会设为 path 。两个返回值满足 path == dir+file_, name := path.Split(f)                 //把文件名输出destFileName := destDir + "copy/" + name //这个name是把文件名放在了目标文件加后//fmt.Println(destFileName)//复制文件CopyFile(f, destFileName)}
}func CopyFile(srcName, destName string) (int64, error) {//打开源文件src, err := os.Open(srcName)if err != nil {log.Fatal(err)}defer src.Close()//打开目标文件   可读可写可创建det, err := os.OpenFile(destName, os.O_CREATE|os.O_WRONLY, 0644)if err != nil {log.Fatal(err)}defer det.Close()return io.Copy(det, src)
}
一次性读取文件内容并写入

读取文件内容并写入

package _caseimport ("log""os""path"
)// 一次性读取文件内容并写入
func ReadWriteFiles() {//获取源文件路径list := geFiles(sourceDir)for _, f := range list {bytes, err := os.ReadFile(f)if err != nil {log.Fatal(err)}_, name := path.Split(f)destname := destDir + "normal/" + nameerr1 := os.WriteFile(destname, bytes, 0644)if err1 != nil {log.Fatal(err1)}}
}

分片读取文件并写入

package _caseimport ("io""log""os""path"
)// 适用大文件
// 分片读取文件内容分布写入新文件
func OneSideReadWriteToDest() {list := geFiles(sourceDir)for _, f := range list {_, name := path.Split(f)destFileName := destDir + "one_side/" + name//文件写入OneSideReadWrite(f, destFileName)}
}
func OneSideReadWrite(srcName, destName string) {src, err := os.Open(srcName)if err != nil {log.Fatal("1", err)}defer src.Close()dst, err := os.OpenFile(destName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)if err != nil {log.Fatal("2", err)}defer dst.Close()//切片 文件最大的限度buf := make([]byte, 1024)for {n, err := src.Read(buf)if err != nil && err != io.EOF { //如果没有这个io.EOF的话就会报错log.Fatal("3...", err)}if n == 0 {break}dst.Write(buf[:n])}}

一次性读取按行拆分

const README = "README.MD"
func ReadLine1() {fileHeader, err := os.OpenFile(README, os.O_RDONLY, 0444)if err != nil {log.Fatal(err)}defer fileHeader.Close()//将文件一次性读取出来bytes, err := io.ReadAll(fileHeader)if err != nil {log.Fatal(err)}list := strings.Split(string(bytes), "\n")for _, i := range list {fmt.Println(i)}}

按行读取用于大文件

bufio 通过对io模块的封装提供了数据的缓冲功能,能一定程度减少大文件数据块带来的开销。当发起读写操作时,会尝试从缓冲区读取数据,缓冲区没有数据后,才会从数据源去读取缓冲区大小默认为4k

func ReadLine2() {fileHeader, err := os.OpenFile(README, os.O_RDONLY, 0444)if err != nil {log.Fatal(err)}defer fileHeader.Close()reader := bufio.NewReader(fileHeader)for true {//加上分隔符line, err := reader.ReadString('\n')if err == io.EOF {break}fmt.Print(line)}
}func ReadLine3() {fileHeader, err := os.OpenFile(README, os.O_RDONLY, 0444)if err != nil {log.Fatal(err)}defer fileHeader.Close()scanner := bufio.NewScanner(fileHeader)for scanner.Scan() {line := scanner.Text()fmt.Println(line)}
}

Scanner按行读取文件

先使用 NewScanner() 创建 Scanner 对象。然后在 for 循环中,使用 Scanner 的 Scan() 方法读取文件的每一行,在使用 Text() 方法获取每一行的内容。最后,将获取到的行追加到字符串切片中。

func ReadLines(path string) ([]string, error) {file, err := os.Open(path)if err != nil {return nil, err}defer file.Close()var lines []stringscanner := bufio.NewScanner(file)for scanner.Scan() {lines = append(lines, scanner.Text())}return lines, scanner.Err()
}

Reader 读取每一行

使用 bufio.Reader 时,需用 ReadBytes() 或 ReadString() 方法来读取每一行。使用 NewReader() 函数创建一个 Reader 对象。在 for 循环中,我们使用 ReadString() 函数读取每一行的内容,并将其追加到字符串切片中。

func ReadLinesV2(path string) ([]string, error) {file, err := os.Open(path)if err != nil {return nil, err}defer file.Close()var lines []stringreader := bufio.NewReader(file)for {// ReadString reads until the first occurrence of delim in the input,// returning a string containing the data up to and including the delimiter.line, err := reader.ReadString('\n')if err == io.EOF {lines = append(lines, line)break}if err != nil {return lines, err}lines = append(lines, line[:len(line)-1])}return lines, nil
}

ReadLine 按行读取

使用 bufio.Reader 逐行读取文件时,除使用 ReadBytes() 或 ReadString() 方法,可以用 ReadLine() 函数

func ReadLinesV3(path string) ([]string, error) {f, err := os.Open(path)if err != nil {return nil, err}defer f.Close()var lines []stringr := bufio.NewReader(f)for {// ReadLine is a low-level line-reading primitive.// Most callers should use ReadBytes('\n') or ReadString('\n') instead or use a Scanner.bytes, _, err := r.ReadLine()if err == io.EOF {break}if err != nil {return lines, err}lines = append(lines, string(bytes))}return lines, nil
}

使用 bufio.Reader 的 ReadLine() 方法可以读取一行数据,但是需要注意它的返回值。ReadLine() 函数的返回值包括三个部分:读取到的数据、是否读取完整一行以及错误信息。如果读取到的数据超出了缓存区的大小,它会返回一个错误信息,而不是完整的一行数据。

因此,如果读取的一行数据的长度超过了缓存区的大小,ReadLine() 函数将无法读取到完整的一行数据。为了避免这种情况的发生,我们可以通过设置缓存区的大小来解决。

ReadLine 是一个低级的行读取原语。大多数调用者应该使用 ReadBytes(‘\n’) 或 ReadString(‘\n’),或者使用 Scanner。

相关文章:

golang的文件操作

获取文件列表路径 package _caseimport ("fmt""log""os""strings" )// 获取文件路径 // 源文件目录 const sourceDir "file/"// 目标文件目录 const destDir "det_file/"// 拿到目录下完整的路径 func geFiles…...

数据库版本管理框架-Flyway(从入门到精通)

一、flyway简介 Flyway是一个简单开源数据库版本控制器(约定大于配置),主要提供migrate、clean、info、validate、baseline、repair等命令。它支持SQL(PL/SQL、T-SQL)方式和Java方式,支持命令行客户端等&am…...

外网访问内网服务器使用教程

如何在任何地方都能访问自己家里的笔记本上的应用?如何让局域网的服务器可以被任何地方访问到?有很多类似的需求,我们可以统一用一个解决方案:内网穿透。内网穿透的工具及方式有很多,如Ngrok、Ssh、autossh、Natapp、F…...

C# Dictionary 利用 ContainsValue 查询指定值是否已经存在

.NET Framework : 4.7.2IDE : Visual Studio Community 2022OS : Windows 10 x64typesetting : Markdownblog : niaoge.blog.csdn.net 简介 本文介绍如何查询Dictionary 中某个值是否已经存在。 ContainsValue 命名空间: System.Collections.Generic 程序集: System.Collect…...

招不到人?用C语言采集系统批量采集简历

虽说现在大环境不太好,很多人面临着失业再就业风险,包括企业则面临着招人人,找对口专业难得问题。想要找到适合自己公司的人员,还要得通过爬虫获取筛选简历才能从茫茫人海中找到公司得力干将。废话不多说,直接开整。 1…...

HXDSP2441-Demo板

板卡图示 下图为HXDSP2441DEMO板,HXDSP2441DEMO板是围绕HXDSP2441构建的芯片演示验证平台。 板卡简介 除了为HXDSP2441芯片提供供电、时钟、储存、网络及调试电路,来实现芯片最基本的功能,也添加了相关模块以搭建HXDSP2441的典型应用场景…...

静态路由的原理和配置

一.路由器的工作原理 首先我们知道路由器是工作在网络层的,那就是三层设备。网络层的功能主要为:不同网段之间通信、最佳路径选择也就是逻辑地址(ip地址)寻址、转发数据。 1.路由器是什么 路由器是能将数据包转发到正确的目的地…...

Ubuntu20.04降低linux版本到5.4.0-26-generic

前言 试用ubuntu20.04安装昇腾的驱动和cann的时,出现如下问题: (base) rootubuntu:/home/work# ./Ascend-hdk-910-npu-driver_23.0.rc3_linux-aarch64.run --full Verifying archive integrity... 100% SHA256 checksums are OK. All good. Uncompr…...

C++ 类型萃取

什么是 type_traits 在C中,类型萃取(type_traits)是一种编译时技术,用于在编译期间获取和操作类型的信息。 主要用于泛型编程以及在编译时做出决策。 类型萃取可以帮我们检查和处理类型特性,从而优化代码、避免错误或…...

【JVM从入门到实战】(四)类的生命周期

什么是类的生命周期 类的生命周期描述了一个类加载、连接、初始化、使用、卸载的整个过程 一个类完整的生命周期如下: 加载阶段 加载阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码信息。 程序员可以使用Java代码拓展的不同的渠道…...

2023年度美食关键词-葱油花卷

2023年即将过去了,总结这一年的美食关键词,对于我来就,应该就是-大葱了。 前一周,朋友送了我5大葱,在北方,大葱是家家户户必不可少的食材,尤其对于面食爱好者来说,大葱的加入无疑让…...

「Verilog学习笔记」简易秒表

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1nsmodule count_module(input clk,input rst_n,output reg [5:0]second,output reg [5:0]minute);always (posedge clk or negedge rst_n) begin if (~rst…...

《每天一个Linux命令》 -- (12) file命令

欢迎阅读《每天一个Linux命令》系列 !在本篇文章中,将说明file命令用法。 概念 file命令是Linux系统下的文件类型识别命令,用于识别文件的类型。 命令操作 file命令的语法如下: file [选项] 文件命令详细解释 以下是 file 命…...

如何使用ArcGIS Pro制作类似CAD的尺寸注记

经常使用CAD制图的朋友应该比较熟悉CAD内的尺寸标注,这样的标注看起来直观且简洁,那么在ArcGIS Pro内能不能制作这样尺寸注记呢,答案是肯定的,这里为大家介绍一下制作的方法,希望能对你有所帮助。 数据来源 本教程所…...

Go语言bufio包的使用

准备文本文件 rpc_intro.txt RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议, 允许调用不同进程空间的程序。RPC 的客户端和服务器可以在一台机器上,也可以在不同的机器上。程序员使用时,就像调用本地程序一样&…...

计算机网络之IP篇

来源自小林Coding博客,阅读后部分精简笔记 目录 一、IP 的基本认识 二、DNS 三、ARP 四、DHCP 五、NAT 六、ICMP 七、IGMP 七、ping 的工作原理 ping-----查询报文的使用 traceroute —— 差错报文类型的使用 八、断网了还能 ping 通 127.0.0.1 吗&…...

Java中JDK类库常用的6种设计模式

Java中JDK类库常用的6种设计模式:1、抽象工厂。2、建造者模式。3、工厂模式。4、原型模式。5、单例模式。6、适配器模式。 1、抽象工厂 javax.xml.parsers.DocumentBuilderFactory抽象类。 public static DocumentBuilderFactory newInstance()方法。 类功能&…...

C++ 用法全面剖析

我们知道,参数的传递本质上是一次赋值的过程,赋值就是对内存进行拷贝。所谓内存拷贝,是指将一块内存上的数据复制到另一块内存上。 对于像 char、bool、int、float 等基本类型的数据,它们占用的内存往往只有几个字节,对…...

数据库结构

三级结构 内模式:也称为物理模式,它是数据库中数据的物理存储表示,描述了数据在存储介质上的存储方式和物理结构,通常由数据库管理员进行定义。 概念模式:也称为逻辑模式,它是对数据库中全体数据的逻辑表示…...

什么是HTML以及超链接,特殊符号转义的简单使用

目录 什么是HTML🌸 HTML版本 版本说明🌸 XHTML和HTML的区别 超链接🌸基本语法🌸链接的分类 特殊符号 什么是HTML HTML 不是编程语言,没有逻辑处理能力,没有计算能力,不能动态地生成内容&#x…...

汽车销售技巧培训应该学习哪些内容

汽车销售技巧培训应该学习哪些内容 随着汽车市场的竞争日益激烈,汽车销售技巧培训对于提高销售人员的销售能力和服务水平至关重要。本文将介绍汽车销售技巧培训应该学习哪些内容,并结合案例进行分析。 一、产品知识 作为销售人员,了解所销售…...

机器学习---Adaboost算法

1. Adaboost算法介绍 Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然 后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。Adaboost算法本身…...

Java网络编程,使用UDP实现TCP(三), 基本实现四次挥手

简介 四次挥手示意图 在四次挥手过程中,第一次挥手中的Seq为本次挥手的ISN, ACK为 上一次挥手的 Seq1,即最后一次数据传输的Seq1。挥手信息由客户端首先发起。 实现步骤: 下面是TCP四次挥手的步骤: 第一次挥手&…...

“百里挑一”AI原生应用亮相,百度智能云千帆AI加速器首个Demo Day来了!

作者简介: 辭七七,目前大二,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…...

PyTorch深度学习实战(25)——自编码器

PyTorch深度学习实战(25)——自编码器 0. 前言1. 自编码器2. 使用 PyTorch 实现自编码器小结系列链接 0. 前言 自编码器 (Autoencoder) 是一种无监督学习的神经网络模型,用于数据的特征提取和降维,它由一个编码器 (Encoder) 和一…...

靠谱的车- 华为OD统一考试(C卷)

靠谱的车- 华为OD统一考试(C卷) OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题&#xf…...

Apache Flink(十一):Flink集群部署-Standalone集群部署

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. 节点划分...

vue的组件传值

Vue中组件之间的数据传递可以使用props和$emit来实现。 1.使用props传递数据&#xff1a;父组件可以通过子组件的props属性向子组件传递数据。 父组件中&#xff1a; <template><div><child-component :message"parentMessage"></child-comp…...

ue5材质预览界面ue 变黑

发现在5.2和5.1上都有这个bug 原因是开了ray tracing引起的&#xff0c;这个bug真是长时间存在&#xff0c;类似的bug还包括草地上奇怪的影子和地形上的影子等等 解决方法也很简单&#xff0c;就是关闭光追&#xff08;不是…… 就是关闭预览&#xff0c;在材质界面preview sc…...

【SpringCloud篇】Eureka服务的基本配置和操作

文章目录 &#x1f339;简述Eureka&#x1f6f8;搭建Eureka服务⭐操作步骤⭐服务注册⭐服务发现 &#x1f339;简述Eureka Eureka是Netflix开源的一个基于REST的服务治理框架&#xff0c;主要用于实现微服务架构中的服务注册与发现。它由Eureka服务器和Eureka客户端组成&#…...