Linux C语言磁盘U盘容量读取、目录列表读取、文件夹大小读取

银河麒麟V10安装U盘制作全攻略:从原理到实战避坑指南 在操作系统安装与部署领域,引导方式和介质制作是基础且关键的技术环节。其核心原理涉及引导加载程序(如GRUB2)、分区表(MBR/GPT)与文件系统的协同工作,确保计算机能够正确识别并启动安装环境。这一过程的技术价值在于实现跨硬件平台和固件(UEFI/传统BIOS)的广泛兼容性,是系统运维、国产化替代和开发测试中的常见需求。尤其是在面对像银河麒麟V10这类基于Linux内核的国产操作系统时,其镜像结构与传统Windows ISO存在差异,通用的“刻录”方法往往失效。因此,掌握底层“写盘”技术,并选用如Rufu 阅读详情

Linux C语言磁盘U盘容量读取、目录列表读取、文件夹大小读取C语言源代码

#include <stdio.h>
#include <sys/statfs.h>
#include <string.h>
#include <dirent.h>
#include <stdbool.h> 
#include <sys/stat.h>

/***********************************************************
*原型:bool is_dir(const char *path)
*功能:判断是否为目录
***********************************************************/
bool is_dir(const char *path)
{
    struct stat statbuf;
    if(lstat(path, &statbuf) ==0)//lstat返回文件的信息,文件信息存放在stat结构中
    {
        return S_ISDIR(statbuf.st_mode) != 0;//S_ISDIR宏,判断文件类型是否为目录
    }
    return false;
}

/***********************************************************
*原型:bool is_special_dir(const char *path)
*功能:判断是否是特殊目录
***********************************************************/
bool is_special_dir(const char *path)
{
    return strcmp(path, ".") == 0 || strcmp(path, "..") == 0;
}

/***********************************************************
*原型:bool is_file(const char *path)
*功能:判断是否为常规文件
***********************************************************/
bool is_file(const char *path)
{
    struct stat statbuf;
    if(lstat(path, &statbuf) ==0)
        return S_ISREG(statbuf.st_mode) != 0;//判断文件是否为常规文件
    return false;
}

/***********************************************************
*原型:void get_file_path(const char *path, const char *file_name,  char *file_path)
*功能:生成完整的文件路径
***********************************************************/
void get_file_path(const char *path, const char *file_name,  char *file_path)
{
    strcpy(file_path, path);
    if(file_path[strlen(path) - 1] != '/')
        strcat(file_path, "/");
    strcat(file_path, file_name);
	
}

/***********************************************************
*原型:int file_size(char* filename) 
*功能:获取文件的大小,返回文件的字节大小
***********************************************************/
int file_size(char* filename) 
{ 
	int size = 0;
	struct stat sss;
	stat(filename,&sss); 
	size = sss.st_size; 
	return size; 
} 

/***********************************************************
*原型:void FileFilderSize(const char *path,int *cap)
*功能:获取文件夹的大小,返回文件夹的字节大小
***********************************************************/
void FileFilderSize(const char *path,int *cap)
{
	int sum = 0;
	char aaa[200] = {0};
	DIR * dir;
	struct dirent * dir_info;
    char file_path[PATH_MAX];
    if(is_file(path))
    {
        remove(path);
        return;
    }
    if(is_dir(path))
    {
        if((dir = opendir(path)) == NULL)
            return;
        while((dir_info = readdir(dir)) != NULL)
        {
            get_file_path(path, dir_info->d_name, file_path);
            if(is_special_dir(dir_info->d_name))
			{
				continue;
			}
                
			sprintf(aaa,"%s/%s",path,dir_info->d_name);
        	sum += file_size(aaa);
			printf("d_name : %s\n", dir_info->d_name);
			
        }
		closedir(dir);
    }
	*cap = sum;
}
/***********************************************************
*原型:int Udisk_Capacity(char *chardir,int *total,int *free)
*功能:获取U盘(磁盘)空间大小,单位为KB
***********************************************************/
int Udisk_Capacity(char *chardir,int *total,int *free)
{
	struct statfs s;
	
	memset(&s, 0, sizeof(struct statfs));
	if( 0 != statfs(chardir, &s) )
	{
		return -1;
	}

	if(s.f_bsize >= 1024)
	{
		printf("\n if(s.f_bsize >= 1024)\n");
		*total = (int)(  (s.f_bsize / 1024 ) * s.f_blocks );
		*free = (int) ( ( s.f_bsize / 1024 ) * s.f_bavail );
	}
	else
	{
		printf("\n if(s.f_bsize < 1024)  else\n");
		*total = (int)(  (s.f_blocks / 1024 ) * s.f_bsize );
		*free = (int) ( ( s.f_bavail / 1024 ) * s.f_bsize );
	}
}


int main(void)
{
	int a,b,c;
	Udisk_Capacity("/home/xxx/Desktop",&a,&b);
	printf("Disk total space =%d KB %d MB %d GB\n",a,a>>10,a>>20);
	printf("Disk free space=%d KB %d MB %d GB\n",b,b>>10,b>>20);
	FileFilderSize("/home/xxx/Desktop/testfolder/",&c);
	
	printf("FileFolder space = %d bytes %d KB %d MB\n",c,c/1000,c/1000000);
}

测试结果

首先测试一下U盘或者磁盘的大小:
在这里插入图片描述
在选择一个文件夹查看一下文件夹的总大小:
在这里插入图片描述
运行程序后查看结果如下:
在这里插入图片描述

在这里插入图片描述

打造便携式AI开发环境:将OpenClaw部署到U盘实现跨平台即插即用 本地AI模型部署与管理是当前AI工程化实践中的关键环节,它涉及将训练好的模型集成到生产环境,并提供稳定的服务接口。其核心原理在于通过环境隔离与依赖管理,确保模型在不同系统上的一致性与可复现性。这项技术的价值在于能显著降低AI应用落地的门槛,提升开发与部署效率。典型的应用场景包括多设备开发、技术演示、教育实验以及在受限环境下的快速原型验证。本文聚焦于利用开源工具OpenClaw,结合虚拟环境技术,构建一个可置于U盘的便携式AI网关方案。该方案通过将Python虚拟环境、项目代码与配置整体打包,实现了开发环境与 阅读详情

相关推荐

OpenClaw:跨平台本地AI工作流编排器,U盘即运行

AI本地化部署正从‘能跑起来’迈向‘开箱即用’新阶段。其核心在于绕过传统容器环境依赖,通过轻量级服务管理、动态路径重定向与桌面应用封装,实现模型服务、文档解析、向量检索等能力的低门槛集成。OpenClaw作为典型代表,以Rust+Tauri构建跨平台底座,支持Windows/Mac/U盘免安装启动,将AI工作流配置收敛至可视化界面,显著降低Python环境、Docker权限、ARM/x86兼容性等工程门槛。适用于企业知识库离线问答、教育机房AI教学、律所合同分析等强隐私、弱联网场景,让非专业用户也能快速构建

weixin_30905981的博客 378

linux 文件读写

举个例子,比如第一次打开文件时分配的值fd = 0,如果该文件被关闭,下次新打开一个文件时,fd依然为0,但如果之前打开的文件没有被close掉,则下次新打开一个文件时,fd递增为1,一直递增到系统设定的同时打开文件的最大值为止,这个最大值可以使用 ulimit -n 查看,一般为1024。打开当前目录下的text.txt文件,如果不存在则创建,首先写入一个字符串,然后关闭文件,再重新打开读取该文件中的内容并打印。每一个rwx都对应一个。这些打开方式可以使用。

悟心的专栏 1017

跨平台访问BitLocker加密磁盘:原理、方案与Linux/macOS实战

磁盘加密是数据安全领域的核心基础技术,通过对存储设备进行全盘加密,确保即使物理介质丢失,数据也不会泄露。其原理通常采用分层密钥体系,如BitLocker使用的全卷加密密钥(FVEK)和卷主密钥(VMK)结构,在提供强安全性的同时,也带来了跨平台访问的挑战。这项技术的价值在于为混合办公和多设备协作环境下的敏感数据提供了基础保护。然而,当加密硬盘需要在Windows、macOS、Linux等不同操作系统间流动时,就产生了“跨平台BitLocker数据访问”这一具体需求。针对此场景,主流方案包括使用官方恢复密钥进

weixin_34192816的博客 343

Linux下C语言实现文件读写操作(包含在应用层与驱动层)

前言: 配合团队内的小伙伴做数据转换,他需要我将保存在.txt文件内的字符数据(十六进制)转换为二进制,也需要我将.Bin文件内的二进制数据转换为字符数据(十六进制)。 下面所贴的程序有很大的优化空间,每次读取数据的量太小,需要频繁IO操作,导致运行速度变得很慢。 1. 数据转换程序的原始模板(C语言的文件操作): #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { }

weixin_42842270的博客 2691

Linux核心目录深度解析:/etc、/dev、/usr、/var、/proc 实战指南

在Linux系统管理与运维中,理解核心目录结构是掌握系统运作原理的基础。Linux遵循“一切皆文件”的哲学,通过特定的目录层级组织系统资源、配置、数据和运行时信息。其核心价值在于为系统管理员和开发者提供了清晰、标准化的资源管理框架,使得软件安装、配置管理、故障排查和性能监控变得有章可循。这一设计广泛应用于服务器运维、软件开发环境搭建及嵌入式系统等领域。本文聚焦于Linux系统中五个最核心且最常打交道的目录:/etc、/dev、/usr、/var和/proc。其中,/etc目录作为系统的“总控制台”,集中管理

weixin_33850890的博客 358

E900V21C电视盒子刷Armbian:打造低功耗Linux服务器完整指南

ARM架构作为嵌入式系统和低功耗设备的核心,通过精简指令集和高效能设计,为物联网和边缘计算提供了硬件基础。其工作原理在于将Linux等操作系统移植到非x86平台,实现丰富的软件生态在资源受限设备上的运行,这带来了显著的技术价值:低成本、低功耗和高度可定制化。在智能家居、轻量级服务器和开发学习等应用场景中,基于ARM的设备如电视盒子经过改造后,能够变身为实用的微型服务器。本文以晶晨S905L芯片的E900V21C为例,详细介绍了通过刷入Armbian系统实现这一转变的完整流程,涵盖了从线刷底包、DTB文件适配

axfcjwkbi259888707的博客 465

linux下c语言读写文件操作,linux下的系统级c语言文件读写操作

最近初次接触Linux这么高端的东西,有种进城的感觉。进了linux,发现城里人说话做事的方式都很不一样。个人感觉,初次接触linux主要的痛点在于命令行交互的方式,这就要求我接受城里人的思维,which is 遇到一个软件,先--help,因为城里人不会提供一个图形界面,把所有功能按钮展示在我面前。再就是文件组织形式的不同,linux的文件组织方式是用户目录式。进入linux我首先学了关于c语言...

weixin_39940425的博客 1871

comfyui从入门到精通二:提示词规则详解

《AI绘画提示词使用全指南》摘要: 本文系统解析AI绘画提示词的核心规则与实用技巧。关键点包括:1) 空格与下划线的本质差异,webui会自动转换但comfyui保留原格式;2) 数字与单词表达(如1girl/one girl)会导致风格变化;3) 三种权重控制方式(数值标注、括号嵌套、位置效应),其中数值标注最直观有效;4) 位置衰减公式揭示提示词排序对效果的影响权重。同时指出当前AI绘画仍存在角色一致性等更复杂的技术瓶颈。全文通过多组对比实验,为创作者提供从基础语法到高阶控制的完整解决方案。

ScottePerk的博客 1923

linux udev 检测u盘的插入和拔出,[转]udev实现原理(含检测U盘拔插例子)

add@/devices/pci0000:00/0000:00:1d.1/usb2/2-1add@/devices/pci0000:00/0000:00:1d.1/usb2/2-1/usbdev2.2_ep00add@/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0add@/class/scsi_host/host2add@/devices/pci...

weixin_39604139的博客 788

海康工业相机使用教程

海康工业相机连接电脑教程

qq_43251445的博客 2万+

【STM32单片机】RS485通信—基于STM32G474芯片

做项目需要用485通信来控制Go电机参考资料:【【STM32F103C8T6系列】10. 实验例程——485(USART串口)通讯实验】 https://www.bilibili.com/video/BV19w411r7ka/?PDF: STM32G474 开发指南 正点原子 DMG474 开发板教程 第28章485只是物理层,代码逻辑还是UART串口通信,相当于是电路有RS485转换芯片,所以还是用UART串口通信方式。

m0_48808835的博客 3647

易语言磁盘操作与文本目录:盘符枚举、文件读写与日志归档实战

在Windows环境下开发工具类程序,磁盘操作和文本目录是绕不开的基础能力。易语言以全中文命令为核心,通过取磁盘总空间、创建目录、写到文件等原生命令,即可实现盘符枚举、容量统计与文本文件读写。掌握目录结构规划、路径拼接和编码转换原理,能有效规避中文乱码、文件占用、权限不足等高频问题。这类技术广泛应用于日志归档、配置读取、报告导出和数据迁移等实际场景。本文从易语言基础命令出发,结合工程经验,系统讲解磁盘枚举、文本读写与归档的完整思路,帮助开发者快速构建可靠的文件处理工具。

weixin_33859231的博客 541

小红书私信接口与Hook技术实战:微信跳转卡片的合规与破解之道

本文深入探讨了小红书私信接口与Hook技术的实战应用,重点解析了微信跳转卡片的合规使用与破解方法。通过官方私信接口的合规玩法与Xposed框架的Hook技术对比,为开发者提供了技术选型指南和实战建议,帮助实现高效的用户跳转与转化。

weixin_30399821的博客 731

AlayaRenderer G-buffer 入门指南:albedo、normal、depth、roughness、metallic 五通道到底是什么

**AlayaRenderer**(Generative World Renderer)是一款面向游戏与虚拟世界的 AI 原生渲染器,核心能力是把视频"拆解"成 G-buffer 数据,再重新"渲染"出任意风格的新画面。想用好它,必须先搞懂 G-buffer 的五个通道:**albedo、normal、depth、roughness、metallic**。本文用大白话讲清楚它们各是什么、为什么需要

gitblog_00636的博客 254

SpringBoot3 + Vben5.0实战:从零搭建企业级管理后台(附完整代码)

本文详细介绍了如何从零开始,使用SpringBoot3与Vben5.0技术栈搭建现代化企业级管理后台。通过对比分析,阐述了该组合在开发效率、性能(如虚拟线程)和权限模型(RBAC)方面的优势,并提供了从项目初始化、核心功能开发到部署运维的完整实战指南,帮助开发者快速构建高性能、易维护的后台系统。

weixin_29306317的博客 171

海思Hi3516CV610开发实战:在Ubuntu 22.04上从零构建嵌入式Linux开发环境

本文详细介绍了在Ubuntu 22.04上为海思Hi3516CV610开发板搭建嵌入式Linux开发环境的完整流程。从虚拟机配置、系统安装到基础环境设置,提供了实用技巧和常见问题解决方案,帮助开发者高效构建适用于智能视觉处理的开发环境。

weixin_29197699的博客 508

Windows Server 2019物理机安装全攻略:从ISO镜像到U盘启动的完整教程

在云计算和虚拟化技术普及的今天,物理机安装Windows Server 2019依然是企业运维中的常见需求。ISO镜像和U盘启动是系统部署的基础环节,其原理涉及引导模式匹配、分区类型选择及驱动加载等关键技术。正确制作启动盘并配置RAID,能有效解决安装过程中硬盘识别失败、启动异常等问题,确保服务器系统稳定运行。本教程详细解析从镜像校验到首次登录的完整流程,涵盖BIOS设置、版本选择及常见故障排查,帮助运维人员高效完成物理服务器部署。

weixin_33766168的博客 220

量化交易python代码解析:从狙击手算法到最优限价算法

在金融市场的竞技场上,量化交易如同一位冷静的策略大师,它以数学模型为剑,以计算机程序为盾,精准出击,捕捉市场的微妙波动。本文将深入探讨五种核心量化交易算法:直接委托算法(DMA)、时间加权平均算法(TWAP)、冰山算法(Iceberg)、狙击手算法(Sniper)、条件委托算法(Stop)以及最优限价算法(BestLimit),揭开它们背后的运作机制与实战应用。

木头大左的博客 1884

Linux 根目录结构详解

根目录C:\D:\E:\在 Linux 中,所有磁盘、分区、移动硬盘、网络文件系统和设备,最终都会挂载到下面的某个目录。├── home├── usr├── etc├── var├── opt└── mnt是整个文件系统的根目录。/root是管理员root用户的个人主目录。和/root不是同一个目录。目录名称来源主要用途常见内容root整个文件系统起点所有目录/binbinary基础普通命令lscpbash/sbin基础系统管理命令fsckreboot/boot。

weixin_55102248的博客 213

RK3568平台开发系列讲解(项目篇)手写数字识别

📢 本篇章带大家基于飞桨(PaddlePaddle),完成一个简单的手写数字识别任务。

内核笔记 1182

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

写给三弟的 C语言编程 快速入门

三弟,你要的C语言快速入门,已整理好 请接收。

码刀攻城 3930

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Ubuntu下C语言开发环境搭建:从系统安装到项目实战

C语言作为系统编程和嵌入式开发的核心,其学习效率高度依赖于开发环境。在Linux操作系统上进行C语言开发,能够直接接触GCC编译器、GDB调试器等底层工具链,有助于深入理解程序编译、链接和执行的原理。这种贴近硬件的开发方式,对于掌握内存管理、指针操作等核心概念具有不可替代的价值。无论是操作系统开发、驱动编写,还是高性能服务器编程,基于Linux的C语言环境都是行业标准实践。本文以Ubuntu系统为例,详细演示如何从零开始配置一个完整的C语言开发环境,涵盖系统安装、GCC编译器套件配置、VSCode编辑器集成

weixin_30920853的博客 354

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

U-Boot开发入门教程|嵌入式工程实战手册(系列一)

摘要 本文结合实际嵌入式项目开发经验,从零梳理 U-Boot 引导程序完整开发体系。区别于官方文档生硬的说明方式,本文站在工程落地角度,讲解源码目录拆解、交叉编译实操、分层架构设计、完整启动流程、调试命令实战以及和 Linux 内核对接细节,同时补充大量项目调试踩坑经验,适配 ARM 系列嵌入式开发板,适合嵌入式软件工程师入门与项目查阅。

u010020248的博客 576

Windows 10 官方镜像下载、U盘启动与安装排错全流程

系统镜像是操作系统的完整安装源,其来源可靠性与文件完整性直接决定部署成败;引导模式与磁盘分区表(UEFI+GPT 与 Legacy+MBR)是否匹配,则决定安装介质能否被固件识别并正确写入引导。通过 SHA-256 哈希校验可验证镜像是否被篡改或损坏,借助 U 盘启动盘制作和 BIOS/UEFI 参数设置,能把通用安装介质适配到不同硬件平台。这套方法的技术价值在于降低重装失败率、缩短排错时间,广泛适用于个人电脑维护、老旧笔记本升级、小批量办公机部署等场景。围绕 Windows 10 官方镜像下载与安装,完整

weixin_34288121的博客 272

终极磁盘清理指南:Czkawka跨平台重复文件查找工具深度解析

你是否曾因磁盘空间不足而烦恼?是否发现电脑中有大量重复文件却无从下手?Czkawka(发音:tch-kav-ka,波兰语意为"打嗝")是一款由Rust编写的开源跨平台磁盘清理工具,它不仅能帮你快速找到并清理重复文件,还能识别相似图片、优化视频文件、清理临时文件等。这款免费工具支持Windows、macOS、Linux甚至Android系统,通过多线程技术和高效算法实现秒级扫描,让磁盘空间管理变得简

gitblog_00726的博客 1113
上一篇: 麦克风阵列声源定位四通道麦克风数据库及TDOA双曲交汇定位算法实验
下一篇: Linux字符设备驱动——ZYNQ PS_LED(MIO9)驱动开发
SlaveOpen
博客等级 码龄5年 3606粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值