当前位置: 首页 > 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…...

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

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

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...