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

INI和CSV文件保存

INI文件

INI文件是一种配置文件格式,通常用于Windows操作系统中的应用程序中。

它是一种文本文件,由多个节和键值对组成,用于存储应用程序的配置信息。

INI文件的特点包括:

  • INI文件是一种文本文件,易于编辑和阅读。

  • INI文件的结构简单,由多个节和键值对组成,易于理解和维护。

  • INI文件支持多层级节,可以方便地组织和管理配置信息。

  • INI文件不支持数据类型,所有的键值对都是字符串类型。

  • INI文件通常用于存储应用程序的配置信息,例如窗口位置、字体大小、数据库连接等。

INI文件是一种简单、易于使用和维护的配置文件格式,适用于存储应用程序的配置信息。

INI文件通常包含多个节(section),每个节包含多个键值对(key-value pair)。

每个键值对由一个键(key)和一个值(value)组成,中间用等号连接。例如:

[Database]
Server=127.0.0.1
Port=3306
Username=root
Password=123456
Database=mydb

 INI文件支持多层级节,可以方便地组织和管理配置信息

[Database]
Server=127.0.0.1
Port=3306
Username=root
Password=123456
Database=mydb[Logging]
Level=INFO
File=/var/log/myapp.log[相机1]
曝光=50
亮度=100

在上面的例子中,INI文件包含了两个节,[Database]和[Logging]。

每个节下面包含了多个键值对,分别描述了数据库连接和日志记录的相关信息。

INI文件不支持数据类型,所有的键值对都是字符串类型。

这意味着在读取INI文件时,需要将字符串转换成对应的数据类型,例如整数、浮点数、布尔值等。

总之,INI文件是一种轻量级的配置文件格式,非常适用于存储应用程序的配置信息。

它的结构简单,易于理解和维护,适用于不需要复杂数据类型和结构的场景

 

using Ini;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//using Ini;namespace _01_INI文件读写
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private string cameName;private int expos;private int bright;private string Ip;private string FileName;private void button2_Click(object sender, EventArgs e){//获取配置信息 cameName = textBox1.Text;expos = Convert.ToInt32( textBox2.Text);bright = Convert.ToInt32(textBox3.Text);Ip = textBox4.Text;//保存//保存的地址string path =Directory.GetCurrentDirectory()+@"\配置文件";if (!Directory.Exists(path)){Directory.CreateDirectory(path);}//设置配置文件的名称string fileName = path + @"\相机配置文件.ini";FileName = fileName;//调用INIApi中的方法写入Ini.IniAPI.INIWriteValue(fileName, cameName,"曝光",expos.ToString());Ini.IniAPI.INIWriteValue(fileName, cameName, "亮度", bright.ToString());Ini.IniAPI.INIWriteValue(fileName, cameName, "IP", Ip);MessageBox.Show("保存成功");}//读取private void button1_Click(object sender, EventArgs e){expos = IniAPI.GetPrivateProfileInt(textBox1.Text,"曝光",0,FileName);bright = IniAPI.GetPrivateProfileInt(textBox1.Text, "亮度", 0, FileName);Ip=IniAPI.GetPrivateProfileString(textBox1.Text, "Ip", "", FileName);expos += 20;textBox2.Text= expos.ToString();textBox3.Text = bright.ToString();}}
}

 

Csv

CSV文件格式旨在存储表格数据,该数据通常包含行和列。每一行数据代表表格中的一行,每一列代表表格中的一列。CSV文件中每个数据字段之间都使用逗号分隔。每一行以换行符结束。如:

xxxxxxxxxx 姓名,年龄,性别小明,20,男小红,18,女小华,19,女
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace csv
{public class CSVAPI{// 写入csvpublic void SaveData(string data,string result){// Directory.GetCurrentDirectory()  文件夹路径string path = Directory.GetCurrentDirectory() + "\\data";if (!Directory.Exists(path))// 如果不存在这个路径 指的文件夹{Directory.CreateDirectory(path);// 创建该路径}string fileName = $"{path}\\{DateTime.Now.ToString("yyyy-MM-dd")}.csv";// 文件路径if (!File.Exists(fileName))// 如果csv文件不存在{// FileStream 文件流// 参数一:文件操作路径// 参数二:FileMode.Create 如果有则替换 如果没有则新建// 参数三:FileAccess.Write 写入的权限FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);// StreamWriter 写入工具StreamWriter sw = new StreamWriter(fs, Encoding.Default);StringBuilder sb = new StringBuilder();// 定义可变字符串 保存存储的数据sb.Append("时间").Append(",").Append("姓名").Append(",").Append("事件");// 拼接表头sw.WriteLine(sb);// 添加表头sw.Close();// 关闭读取工具sw.Dispose();// 释放资源fs.Close();// 关闭文件流fs.Dispose();// 释放资源/}// 如果csv存在 只需要把此次的数据进行追加写入 不用写入表头using (StreamWriter sw2 = new StreamWriter(fileName, true, Encoding.Default)){StringBuilder sb = new StringBuilder();sb.Append(DateTime.Now.ToString("HH-mm-ss")).Append(",").Append(data).Append(",").Append(result);sw2.Write(sb);}}// 读取csvpublic string Read(){string path = Directory.GetCurrentDirectory() + "\\data";if (!Directory.Exists(path))// 如果不存在路径{Directory.CreateDirectory(path);// 创建该路径}string filename = $"{path}\\{DateTime.Now.ToString("yyyy-MM-dd")}.csv";if (!File.Exists(filename)){return "文件不存在";}StreamReader sr = new StreamReader(filename,Encoding.Default);// 读取工具string s = sr.ReadToEnd();// 读取数据sr.Close();sr.Dispose();return s;}}
}

 

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace csv
{public class CSVAPI{// 写入csvpublic void SaveData(string data,string result){// Directory.GetCurrentDirectory()  文件夹路径string path = Directory.GetCurrentDirectory() + "\\data";if (!Directory.Exists(path))// 如果不存在这个路径 指的文件夹{Directory.CreateDirectory(path);// 创建该路径}string fileName = $"{path}\\{DateTime.Now.ToString("yyyy-MM-dd")}.csv";// 文件路径if (!File.Exists(fileName))// 如果csv文件不存在{// FileStream 文件流// 参数一:文件操作路径// 参数二:FileMode.Create 如果有则替换 如果没有则新建// 参数三:FileAccess.Write 写入的权限FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);// StreamWriter 写入工具StreamWriter sw = new StreamWriter(fs, Encoding.Default);StringBuilder sb = new StringBuilder();// 定义可变字符串 保存存储的数据sb.Append("时间").Append(",").Append("姓名").Append(",").Append("事件");// 拼接表头sw.WriteLine(sb);// 添加表头sw.Close();// 关闭读取工具sw.Dispose();// 释放资源fs.Close();// 关闭文件流fs.Dispose();// 释放资源/}// 如果csv存在 只需要把此次的数据进行追加写入 不用写入表头using (StreamWriter sw2 = new StreamWriter(fileName, true, Encoding.Default)){StringBuilder sb = new StringBuilder();sb.Append(DateTime.Now.ToString("HH-mm-ss")).Append(",").Append(data).Append(",").Append(result);sw2.Write(sb);}}// 读取csvpublic string Read(){string path = Directory.GetCurrentDirectory() + "\\data";if (!Directory.Exists(path))// 如果不存在路径{Directory.CreateDirectory(path);// 创建该路径}string filename = $"{path}\\{DateTime.Now.ToString("yyyy-MM-dd")}.csv";if (!File.Exists(filename)){return "文件不存在";}StreamReader sr = new StreamReader(filename,Encoding.Default);// 读取工具string s = sr.ReadToEnd();// 读取数据sr.Close();sr.Dispose();return s;}}
}

API

应用程序编程接口(英语:Application Programming Interface,简称:API),是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

相关文章:

INI和CSV文件保存

INI文件 INI文件是一种配置文件格式,通常用于Windows操作系统中的应用程序中。 它是一种文本文件,由多个节和键值对组成,用于存储应用程序的配置信息。 INI文件的特点包括: INI文件是一种文本文件,易于编辑和阅读。…...

汽车智能钥匙中PKE低频天线的作用

PKE(Passive Keyless Entry)即被动式无钥匙进入系统,汽车智能钥匙中PKE低频天线在现代汽车的智能功能和安全保障方面发挥着关键作用,以下是其具体作用: 信号交互与身份认证 低频信号接收:当车主靠近车辆时…...

计算机等级考试

一、计算机等级考试——题库 (1)选择题 (2)基本操作题 (3)上网题 (4)文字题 (5)表格题 (6)演示文稿题 二、计算机等级考试——标准评…...

Geotools中获取Shapefile的属性表格字符集编码的一种方法

目录 前言 1、字符集编码的重要性 2、Geotools 在 GIS 开发中的地位 一、GeoTools的字符集知识 1、字符集的作用 2、shapefile中字符集信息 二、GeoTools中获取字符集的方法 1、默认获取 2、从DataStore中获取 3、从CPG文件中获取 4、生产字符获取实践 三、总结 前言…...

HTTP 与 HTTPS 协议:从基础到安全强化

引言 互联网的消息是如何传递的? 是在路由器上不断进行跳转 IP的目的是在寻址 HTTP 协议:互联网的基石 定义 HTTP(英文:HyperText Transfer Protocol,缩写:HTTP),即超文本传输协…...

Scrapy爬虫框架介绍

目录 什么是Scrapy Scrapy核心组件 Scrapy扩展组件 组件交互流程 安装Scrapy Scrapy项目目录结构说明 创建Scrapy项目 创建爬虫 运行爬虫 配置请求头 全局配置请求头 指定爬虫配置请求头 配置管道pipeline 全局配置pipeline 方式一:指定爬虫配置pipe…...

Stable Diffusion模型高清算法模型类详解

Stable Diffusion模型高清算法模型类详细对比表 模型名称核心原理适用场景参数建议显存消耗细节增强度优缺点4x-UltraSharp残差密集块(RDB)结构优化纹理生成真实人像/建筑摄影重绘幅度0.3-0.4,分块尺寸768px★★★★★☆皮肤纹理细腻,但高对比场景易出现…...

软考网络安全口诀

首先,我们来看第一个口诀 “防御为先,安全无小事”。这个口诀强调了网络安全中的防御意识。在软考备考过程中,我们需要深刻理解网络安全不仅仅是技术层面的问题,更是一种全面的防御思维。从网络架构设计到日常运维管理&#xff0…...

Baklib内容中台赋能企业智管

内容中台构建全场景智管 现代企业数字化运营中,全域内容管理能力已成为核心竞争力。通过智能知识引擎驱动的内容中台架构,企业能够实现跨部门、多形态数据的统一归集与动态调度。以某制造企业为例,其利用中台系统将分散在CRM、ERP及内部文档…...

vscode+vue前端开发环境配置

目录 一、安装Vue二、使用vue新建项目 一、安装Vue 在node.js安装好之后, npm config set registry https://registry.npmmirror.com# 安装vue相关工具,webpack用来项目构建、打包、资源整合等。 npm install webpack -g# 安装vue-cli脚手架 npm insta…...

Python项目-基于深度学习的校园人脸识别考勤系统

引言 随着人工智能技术的快速发展,深度学习在计算机视觉领域的应用日益广泛。人脸识别作为其中的一个重要分支,已经在安防、金融、教育等多个领域展现出巨大的应用价值。本文将详细介绍如何使用Python和深度学习技术构建一个校园人脸识别考勤系统&#…...

浅谈C++函数特性

C的函数特性 前言 在C中,函数加入了许多特性,例如:a、函数缺省参数 b、函数重载 c、内联函数 等等……,这里我会和大家详细去探讨这些特性。以及探讨这些特性的一些细节,同时在内联部分,我们还会把C语言的…...

Python----数据分析(Matplotlib三:绘图二:箱图,散点图,饼图,热力图,3D图)

一、箱图 箱图(Box Plot),又称为箱形图、箱线图、盒式图、盒状图或盒须图,是一种用于展示数据分布情况的统计图表 箱图通过显示数据的中位数、上下四分位数(Q1和Q3)、异常值和数据的分布范围,提…...

高性能PHP框架webman爬虫引擎插件,如何爬取数据

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...

【2025年后端开发终极指南:云原生、AI融合与性能优化实战】

一、2025年后端开发的五大核心趋势 1. 云原生架构的全面普及 云原生(Cloud Native)已经成为企业级应用的核心底座。通过容器化技术(DockerKubernetes)和微服务架构,开发者能够实现应用的快速部署、弹性伸缩和故障自愈…...

健康养生:开启活力人生的钥匙

在这个瞬息万变的时代,人们愈发珍视健康。健康养生,宛如一把神奇的钥匙,为我们打开通往活力人生的大门,全方位呵护身心,提升生活品质。 从饮食层面看,均衡膳食是核心。每餐力求包含碳水化合物、蛋白质、脂…...

vue2+ele-ui实践

前言:真理先于实践,实践发现真理,再实践检验真理 环境:vue2 & element-ui 正片: Select 选择器 简称 下拉框 下拉框完整的使用循环 下拉框 → 点击下拉框 → 展示数据 → 选择数据 → 下拉框显示数据 核心具有…...

三维重建(十五)——多尺度(coarse-to-fine)

文章目录 一、多尺度与图像金字塔:从全局结构到局部细节二、特征提取与匹配2.1 从数据采集的角度2.2 从数据增强的角度2.3 从特征提取的方式三、以多尺度的方式使用特征3.1 特征提取与匹配3.1.1 多尺度特征检测3.1.2 金字塔匹配3.2 深度估计与立体匹配3.2.1 多尺度立体匹配3.2…...

SparkStreaming之04:调优

SparkStreaming调优 一 、要点 4.1 SparkStreaming运行原理 深入理解 4.2 调优策略 4.2.1 调整BlockReceiver的数量 案例演示: object MultiReceiverNetworkWordCount {def main(args: Array[String]) {val sparkConf new SparkConf().setAppName("Networ…...

勿以危小而为之勿以避率而不为

《故事汇之:所见/所闻/所历/所想》:《公园散步与小雨遇记》(二) 就差一点到山顶了,路上碰到一阿姨,她说等会儿要下大雨了,让我不要往上走了,我犹豫了一会儿,还是听劝地返…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) ​遍历字符串​:通过外层循环逐一检查每个字符。​遇到 ? 时处理​: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: ​与…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...

深度解析:etcd 在 Milvus 向量数据库中的关键作用

目录 🚀 深度解析:etcd 在 Milvus 向量数据库中的关键作用 💡 什么是 etcd? 🧠 Milvus 架构简介 📦 etcd 在 Milvus 中的核心作用 🔧 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...

HarmonyOS-ArkUI 自定义弹窗

自定义弹窗 自定义弹窗是界面开发中最为常用的一种弹窗写法。在自定义弹窗中, 布局样式完全由您决定,非常灵活。通常会被封装成工具类,以使得APP中所有弹窗具备相同的设计风格。 自定义弹窗具备的能力有 打开弹窗自定义布局,以…...