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

【软件国产化】| Windows和Linux下文件名后缀是否区分大小写

今天在开发过程中遇到了个软件在Linux系统和Windows系统下功能表现不一致的bug,具体表现为:
插入一张图片(A文件夹中的001.jpg),然后使用“图片替换”功能,用B文件夹中的图片(B文件夹中的001.JPG)进行同名替换,在Windows系统下,图片替换成功;而在Linux系统下,相同的操作,版面上的图片提示“缺图”。

最后排查到的原因是:
这是由Linux和Windows的系统差异造成的:在Windows系统下,文件的后缀名是不区分大小写的;在Linux系统下,文件的后缀名是严格区分大小写的。
简单来说就是:Linux系统下,1.JPG和1.jpg是两张不同的图片,它们可以同时出现在同一个文件夹下,而Windows系统下这种情况是绝对不会发生的。

在这里附上windows和linux下用来判断文件是否存在的方法。

1.Windows系统: _waccess 函数

函数功能
int _waccess(const wchar_t* filename, int mode);用于文件或目录是否存在、检查文件或目录的访问权限

参数说明:
filename:要检查的文件或目录的路径。
mode:要检查的访问模式,可以是以下值之一:
F_OK:检查文件是否存在。
R_OK:检查文件是否可读。
W_OK:检查文件是否可写。
X_OK:检查文件是否可执行。

代码示例:

#include <stdio.h>
#include <io.h>int main()
{// 测试文件是否存在const wchar_t* filename = L"D:\\MyApp.ini";// 第二个参数 mode = 0,表示不指定任何访问权限 if (_waccess(filename, 0) != 0){fprintf(stderr, "File does not exist.\n");return 1;}printf("File exists.\n");return 0;
}

2.Linux系统:_access函数

函数功能
int _access( const char *filename, int mode );用于文件或目录是否存在、检查文件或目录的访问权限

参数说明:
filename:要检查的文件或目录的路径。
mode:要检查的访问模式,可以是以下值之一
F_OK:检查文件是否存在。
R_OK:检查文件是否可读。
W_OK:检查文件是否可写。
X_OK:检查文件是否可执行。

代码示例:

int main()
{const char* filename = "D:\\MyApp.ini";// 检查文件是否存在if (_access(filename, 0) == 0) {printf("File exists\n");}else {printf("File does not exist\n");}return 0;
}
http://www.lryc.cn/news/492851.html

相关文章:

  • 讨论JAVA、JVM与Spring
  • 【04】MySQL数据库和数据表的基本操作详解与实例
  • Spring中实现动态数据源切换,基于AbstractRoutingDataSource
  • StarRocks-join优化
  • js 高亮文本中包含的关键词标红
  • DVWA靶场——File Inclusion
  • Android Framework禁止弹出当前VOLTE不可用的提示窗口
  • OceanBase 大数据量导入(obloader)
  • w058基于web的美发门店管理系统
  • 实时数据开发 | checkpoints监控和调优
  • el-tree的使用及控制全选、反选、获取选中
  • 机器学习(二十五):决策树算法以及决策树和神经网络的对比
  • 新版布谷直播软件源码开发搭建功能更新明细
  • vue3 reactive响应式实现源码
  • git的使用(简洁版)
  • 使用命令行创建 Maven 项目
  • JVM_栈详解一
  • Linux 金仓数据库安装和使用
  • STM32笔记(串口IAP升级)
  • C++网络编程:select IO多路复用及TCP服务器开发
  • 部署 L2JMobius 天堂2芙蕾雅版本
  • C#开发合集
  • 鸿蒙面试 --- 性能优化
  • React的基础知识:Context
  • 微知-lspci访问到指定的PCIe设备的几种方式?(lspci -s bus;lspci -d devices)
  • 【Kubernetes 集群核心概念:Pod】pod生命周期介绍【五】
  • c++的虚继承说明、案例、代码
  • 小米PC电脑手机互联互通,小米妙享,小米电脑管家,老款小米笔记本怎么使用,其他品牌笔记本怎么使用,一分钟教会你
  • 介绍SSD硬盘
  • CMAKE常用命令详解