文登网站建设南京做网站南京乐识专心

news/2025/9/30 16:40:20/文章来源:
文登网站建设,南京做网站南京乐识专心,win7做系统网站哪个好,无锡网站制作选哪家市面上读取 ini 的包都是 读取整个文件到内存中,再获取和修改值, 最后自己再调用保存文件, 这种方式在读取大文件的时候 非常的不友好. windows api 中有现成的高效方法 安装 jna-platform (里面封装了各个系统的 api ,直接用就行. 不用再手动写固定的函数定义) jna-platfor…市面上读取 ini 的包都是 读取整个文件到内存中,再获取和修改值, 最后自己再调用保存文件, 这种方式在读取大文件的时候 非常的不友好. windows api 中有现成的高效方法 安装 jna-platform (里面封装了各个系统的 api ,直接用就行. 不用再手动写固定的函数定义) jna-platform 是官方基于jna 封装好的 系统 API,jna 是调用自己写的 DLL pom.xml dependencygroupIdnet.java.dev.jna/groupIdartifactIdjna-platform/artifactIdversion5.14.0/version /dependencyIniUtil.java package org.example.myapp.utils;import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.Win32Exception; import com.sun.jna.platform.win32.WinDef; import com.sun.jna.win32.W32APIOptions;import java.util.ArrayList; import java.util.Dictionary; import java.util.Hashtable;public class IniUtil {public static String getPrivateProfileString(final String lpAppName,final String lpKeyName, final String lpDefault,final String lpFileName) {final char buffer[] new char[1024];Kernel32.INSTANCE.GetPrivateProfileString(lpAppName, lpKeyName,lpDefault, buffer, new WinDef.DWORD(buffer.length), lpFileName);return Native.toString(buffer);}public static void writePrivateProfileString(final String appName, final String keyName, final String string, final String fileName) {if (!Kernel32.INSTANCE.WritePrivateProfileString(appName, keyName, string, fileName))throw new Win32Exception(Kernel32.INSTANCE.GetLastError());}public static int getPrivateProfileInt(final String appName,final String keyName, final int defaultValue, final String fileName) {return Kernel32.INSTANCE.GetPrivateProfileInt(appName, keyName,defaultValue, fileName);}public static String[] getPrivateProfileSection(final String appName, final String fileName) {final char buffer[] new char[32768];// Maximum INI file size according to MSDN (http://support.microsoft.com/kb/78346)if (Kernel32.INSTANCE.GetPrivateProfileSection(appName, buffer, new WinDef.DWORD(buffer.length), fileName).intValue() 0) {throw new Win32Exception(Kernel32.INSTANCE.GetLastError());}return new String(buffer).split(\0);}public static String[] getPrivateProfileSectionNames(final String fileName) {final char buffer[] new char[65536]; // Maximum INI file size according to MSDN (http://support.microsoft.com/kb/78346)if (Kernel32.INSTANCE.GetPrivateProfileSectionNames(buffer, new WinDef.DWORD(buffer.length), fileName).intValue() 0) {throw new Win32Exception(Kernel32.INSTANCE.GetLastError());}return new String(buffer).split(\0);}public static void writePrivateProfileSection(final String appName, final String[] strings, final String fileName) {final StringBuilder buffer new StringBuilder();for (final String string : strings)buffer.append(string).append(\0);buffer.append(\0);if (!Kernel32.INSTANCE.WritePrivateProfileSection(appName, buffer.toString(), fileName)) {throw new Win32Exception(Kernel32.INSTANCE.GetLastError());}}public interface MyKernel32 extends Library {/*** 用来写入 中文 (** desc* jna-platform 5.14 源码中* MapString, Object DEFAULT_OPTIONS Boolean.getBoolean(w32.ascii) ? ASCII_OPTIONS : UNICODE_OPTIONS;* 在我的电脑上是 UNICODE_OPTIONS, 会导致 中文乱码 (编码是 gbk, 文件编码是 UTF-8))* 所以手动写这个函数定义 指定为 ASCII_OPTIONS (文件编码是 UTF-8, 中文正常显示 )*/MyKernel32 INSTANCE Native.load(kernel32, MyKernel32.class, W32APIOptions.ASCII_OPTIONS);boolean WritePrivateProfileString(String lpAppName, String lpKeyName,String lpString, String lpFileName);}String _filePath;public IniUtil(String filePath) {_filePath filePath;}public String readString(String sectionName, String keyName) {return getPrivateProfileString(sectionName, keyName, , _filePath);}public String readString(String sectionName, String keyName, String defaultValue) {return getPrivateProfileString(sectionName, keyName, defaultValue, _filePath);}public Integer readInt(String sectionName, String keyName) {return getPrivateProfileInt(sectionName, keyName, 0, _filePath);}public Integer readInt(String sectionName, String keyName, Integer defaultValue) {return getPrivateProfileInt(sectionName, keyName, defaultValue, _filePath);}/*** 获取 sectionName 下所有的 keyName** param sectionName* return*/public ArrayListString readKeysBySectionName(String sectionName) {ArrayListString result new ArrayList();final char buffer[] new char[65536];WinDef.DWORD res Kernel32.INSTANCE.GetPrivateProfileString(sectionName, null,null, buffer, new WinDef.DWORD(buffer.length), _filePath);int len res.intValue();int j 0;for (int i 0; i len; i) {if (buffer[i] 0) {String str new String(buffer, j, i - j);result.add(str);j i 1;}}return result;}public ArrayListString readAllSectionNames() {ArrayListString result new ArrayList();final char buffer[] new char[65536];WinDef.DWORD res Kernel32.INSTANCE.GetPrivateProfileString(null, null,null, buffer, new WinDef.DWORD(buffer.length), _filePath);int len res.intValue();int j 0;for (int i 0; i len; i) {if (buffer[i] 0) {String str new String(buffer, j, i - j);result.add(str);j i 1;}}return result;}/*** 读取所有数据 ( !! 大文件慎用,会很慢, 小文件随意用)** return*/public DictionaryString, DictionaryString, String readAllData() {DictionaryString, DictionaryString, String resultDictionary new Hashtable();ArrayListString allSectionList readAllSectionNames();for (String item : allSectionList) {ArrayListString allKeyList readKeysBySectionName(item);DictionaryString, String dataDictionary new Hashtable();for (String child : allKeyList) {String value readString(item, child);dataDictionary.put(child, value);}resultDictionary.put(item, dataDictionary);}return resultDictionary;}/*** 新增 / 修改 (如果存在则修改,否则添加,没有文件会创建)** param sectionName* param keyName* param value*/public void writeString(String sectionName, String keyName, String value) {// NOTE: jna-platform 封装的方法写入中文, 会乱码, 所以调用自己写的MyKernel32.INSTANCE.WritePrivateProfileString(sectionName, keyName, value, _filePath);}/*** 删除指定的 Section** param sectionName*/public void deleteSection(String sectionName) {writePrivateProfileString(sectionName, null, null, _filePath);}/*** 删除所有内容*/public void deleteAllSection() {writePrivateProfileString(null, null, null, _filePath);}/*** 删除一个 key** param sectionName* param keyName*/public void deleteKey(String sectionName, String keyName) {writePrivateProfileString(sectionName, keyName, null, _filePath);} } 测试一下 注入到 spring boot 中 package org.example.myapp.config;import org.example.myapp.utils.IniUtil; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class IniConf {Beanpublic IniUtil iniUtil() {String fileName D:\\Desktop\\demo.ini;return new IniUtil(fileName);} }调用 Autowired public IniUtil ini;GetMapping(/test) public Integer test() {// 测试自己封装的方法String s ini.readString(colors, background); System.out.println(s);ini.writeString(General,test3,测试数据);//ini.deleteKey(General,test3);// 测试静态方法Integer ss IniUtil.getPrivateProfileInt(colors,name,0,D:\\Desktop\\demo.ini);return ss; }

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

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

相关文章

做视频网站程序多少钱企业宣传片视频模板

在Vue.js中,$nextTick是一个用于延迟执行一段代码的实例方法。它的作用是在DOM更新后立即执行回调函数,确保在DOM更新完成后再进行操作。以下是其具体用法: 使用场景:当需要在数据变化后立即对DOM进行操作时,可以使用…

开一个二手车销售网站怎么做贵阳网站seo

1、参数化 1)、准备参数化文件 2),添加CSV数据文件设置 3)、在请求里 引用参数 2、关联函数 1)、给学生充值金币需要从登录返回获取登录cookie 在登录接口添加后置处理器JSON Extractor 用户登录返回结果为&#xff1…

移动端网站制作的有哪些要求网页版原神

爱丽丝和鲍勃一起玩游戏&#xff0c;他们轮流行动。爱丽丝先手开局。 最初&#xff0c;黑板上有一个数字 N 。在每个玩家的回合&#xff0c;玩家需要执行以下操作&#xff1a; 选出任一 x&#xff0c;满足 0 < x < N 且 N % x 0 。 用 N - x 替换黑板上的数字 N 。 如…

js 获取下一个月时间和下一年的时间

// d 实例 :2025-09-01 getNextMonthDate(d) { let t = d.split("-"); console.log(t) let year = parseInt(t[0]); let month = parseInt(t[1]); let day = t[2]; if (month === 1 && (da…

【Rust GUI开发入门】编写一个本地音乐播放器(5. 制作音乐列表组件) - Jordan

目的是要做一个这样的音乐列表组件:包含:一个标题栏 多个列表项制作标题栏 需要在标题栏上显示排序图标,实现点击排序功能,因此额外需要定义一个枚举类型SortKey指示排序依据。这里的排序图标也手动绘制,不使用网…

实用指南:分布式调度问题:定时任务

实用指南:分布式调度问题:定时任务2025-09-30 16:25 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !im…

运输公司网站模板辽宁建设工程信息网变更

文章目录 一、if语句1.if语句2.if 和 elif区别3.三元表达式 二、循环语句1.range函数和循环结束关键字2.while循环3.for循环 三、逻辑运算符1.and语句2.or语句3.not语句4.逻辑运算法的优先级 四、python运算符优先级和结合性一览表 一、if语句 1.if语句 1.if单分支语句 格式…

【Nordic】nRF9151的SLM例程常用AT指令说明

nRF9151的SLM例程常用AT指令说明 本文章主要讲解如何使用nRF9151DK测试SLM例程并且列出常用的AT指令一、SLM介绍 SLM(Serial LTE Modem)是 Nordic Semiconductor 提供的一种基于串口的 LTE 调制解调器解决方案。它通…

sql server经典语句「转」

1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密: select encrypt(原始密码) select pwdencrypt(原始密码) select pwdcompare(原始密码,加密后密码…

Codeforces 2149G Buratsuta 3 题解 [ 蓝 ] [ 摩尔投票 ] [ 线段树 ] [ 随机化 ] [ 主席树 ] [ 根号分治 ]

Buratsuta 3:典中典中典中典中典了属于是。 Sol.1 摩尔投票 首先维护区间出现次数大于等于 $\left \lfloor \dfrac{len}{k} \right \rfloor $ 次的数是摩尔投票板子,每次把 \(k\) 个不同的数相消即可。然后因为摩尔投…

2025 年最新推荐软件开发机构榜:聚焦微服务架构与 724 小时服务的优质厂商精选指南人力资源管理系统/资产管理系统/数据中台管理系统/流程管理系统软件开发公司推荐

当前数字化转型浪潮下,政企机构对软件开发服务的需求愈发旺盛,涵盖 CRM 系统、物联网、运维管理等多类场景。但市场中厂商资质参差不齐,部分厂商技术架构落后,难以适配业务增长;部分重开发轻售后,故障响应迟缓;…

【半导体物理 | 学习笔记】第一章 半导体中的电子状态

一、半导体的晶格结构和结合性质 金刚石结构和共价键 典型代表:硅、锗晶体正四面体晶胞结构:两个面心立方晶胞套构共价键结合闪锌矿型结构和混合键 典型代表:砷化镓等III-V族晶胞结构:两个面心立方晶胞套构混合键共…

网站如何换域名广州网站建设培训学校

一、栈 栈&#xff08;stack&#xff09;又名堆栈&#xff0c;它是一种运算受限的线性表&#xff0c;限定仅在表尾进行插入和删除操作的线性表 表尾这一端被称为栈顶&#xff0c;相反地另一端被称为栈底&#xff0c;向栈顶插入元素被称为进栈、入栈、压栈&#xff0c;从栈顶删…

计数(5):多项式相关

计数中我目前只见过两类与多项式相关的问题,一类是采用 gf 来刻画,一类是用拉插来优化掉 dp 的很大一个维度,还有一类就是神秘多项式问题,但是考虑 fft 已经被 cnoi 除名了所以我就不学了( 这部分写的非常浅显,我…

最新WTAPI开发微信机器人教程说明

最新WTAPI开发微信机器人教程说明 微信二次开发机器人接口开发:框架提供了开放接口,可以通过这些接口对微信进行操作。如接收用户消息、发送消息、操作朋友圈等。 自然语言处理:机器人需要能够理解自然语言,以便能…

线性DP - 学习笔记

动态规划:用空间代替重复计算。 有些递归在展开计算时,总是重复调用一个子问题的解,这种重复调用的递归变成动态规划很有收益。 如果每次展开都是不同的解,或者重复调用的现象很少,那么没有改动态规划的必要。 任…

2025 年最新制氮机厂家权威推荐排行榜:聚焦行业优质厂商综合实力,助力企业精准选购优质设备制氮机产生氮气/氮气纯化/设备改造/维修/保养/半导体用制氮机厂家推荐

在工业生产持续升级的当下,制氮机作为保障多行业生产安全、提升生产效率的关键设备,市场需求日益旺盛。但当前制氮机市场品牌繁杂,产品质量参差不齐,部分厂商技术落后导致设备能耗高、纯度波动大,还有些厂商售后体…

南京的网站建设高端网站的建设

一、效果图 1.点击显示菜单栏&#xff0c;点击x号关闭&#xff1b; 2.点击一级菜单&#xff0c;展开显示二级&#xff0c;并且加号变为减号&#xff1b; 3.点击其他一级导航&#xff0c;自动收起展开的导航。 二、代码实现 <!DOCTYPE html> <html><head>&…

现在asp做网站ai效果图网站

0x01应用场景 获取JavaCard卡内剩余空间&#xff0c;一方面是在评估一张卡的时候需要用到&#xff0c;另一方面是在应用个人化或者运行时需要用到。 例如&#xff1a;应用提供商为了保证自己的应用在卡内运行期间能够不受空间影响&#xff0c;一般会在个人化(安装应用)的时候先…

2025 年氨分解设备厂家最新推荐榜单:含半导体 / 冶金 / 稀土行业专用设备及品牌综合实力排名

随着双碳目标深入推进,氨分解制氢技术在氢能产业中的应用愈发广泛,2025 年全球市场规模预计达 28.7 亿美元。然而,行业发展面临诸多痛点:催化剂性能与成本难以平衡,铁基催化剂转化率低、钌基催化剂成本高;设备能…