xml和yml文件 读写操作

#include<opencv2/opencv.hpp>
#include <Windows.h>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
	system("color 4E");
	String filename = "datas.yml";
	//cv::  增加代码可读性    如文件不存在 XML或YML文件会自动生成
	cv:: FileStorage fwrite(filename, cv:: FileStorage::WRITE);
	//存入矩阵mat类型的数据
	Mat mat = Mat::eye(3, 3, CV_8U);
	//使用write()函数写入数据
	fwrite.write("mat", mat);
	float x = 100;
	fwrite << "x" << x;
	//存入字符串型数据,节点名称为str
	String str = "Learn Opencv 4";
	fwrite << "str" << str;
	//存入数据,节点名称为number_array
	fwrite << "number_array" << "[" << 4 << 5 << 6 << "]";
	//存入多node节点数据,主名称为multi_nodes
	fwrite << "multi_nodes" << "{" << "month" << 8 << "day" << 28 << "year" << 2021 << "time"
		<< "[" << 0 << 1 << 2 << 3 << "]" << "}";
	//数据写完后  关闭文件
	fwrite.release();
    /*************************************************************************************************/
	
	//以读取的模式打开文件
	cv::FileStorage fread(filename, FileStorage::READ);
	//判断是否成功打开了文件
	if (!fread.isOpened())
	{
		::MessageBox(NULL, L"文件不存在!", L"错误信息", MB_OK);
		return -1;
	}
	//读取文件中的数据
	float xRead;
	fread["x"] >> xRead;//读取浮点型数据
	cout << "x=" << xRead << endl;
	//读取字符串数据
	String strRead;
	fread["str"] >> strRead;
	cout << "str=" << strRead << endl;
	//读取含有多个数据的number_array节点
	FileNode fileNode = fread["number_array"];
	int c = 0;
	cout << "number_array=["  ;
	for (FileNodeIterator i = fileNode.begin(); i !=fileNode.end(); i++)
	{
	
		float a;
		*i >> a;
		cout << a ;
		++c;
	/*	if (c== sizeof(fread) / sizeof(fread[0]))*/
	/*	if (c== fileNode.size())*/
		if (c== fileNode.end() - fileNode.begin())
		{
           break ;
		}
			
		cout << ",";
	}
	cout <<"]"<< endl;
  读取含有多个子节点的节点数据,不使用FileNode 和 迭代器进行读取
   FileNode fileNode1 = fread["multi_nodes"];
   int month = (int)fileNode1["month"];
   int day = fileNode1["day"];
   int year = fileNode1["year"];

   cout << "month=" << month << "  day=" << day << " year=" << year;
   cout << " time= [";
 
   //for (int i = 0; i < 4; i++)
   //{
	  // int a = fileNode1["time"][i];
	  // cout << a;
	  // if (i == 3)
		 //  break;
	  // cout<< ",";
   //}
   //cout << "]" << endl;
   FileNode fileNode2 = fread["multi_nodes"]["time"];
   c = 0;
   for (FileNodeIterator i = fileNode2.begin(); i != fileNode2.end(); i++)
   {

	   float a;
	   *i >> a;
	   cout << a;
	   ++c;
	   /*	if (c== sizeof(fread) / sizeof(fread[0]))*/
	   	/*	if (c== fileNode.size())*/
	   if (c == fileNode2.end() - fileNode2.begin())
	   {
		   break;
	   }

	   cout << ",";
   }
   cout << "]" << endl;



	return 0;
}





Spring Boot可以与文件操作进行整合,提供了简化文件读写操作的方便的方式。以下是使用Spring Boot进行文件操作的基本步骤: 1. 添加依赖:在`pom.xml`文件中添加Spring Boot文件操作相关的依赖。例如,可以添加`spring-boot-starter-web`以及其他相关的依赖,以支持文件上传和下载功能。 2. 配置文件上传路径:在`application.properties`(或`application.yml`)配置文件中指定文件上传路径。可以使用`spring.servlet.multipart.location`属性来设置文件上传的目录。 3. 实现文件上传:创建一个控制器(Controller)来处理文件上传请求。使用`@PostMapping`注解来定义一个POST请求处理方法,并使用`@RequestParam("file") MultipartFile file`注解来接收上传的文件。然后使用`file.transferTo(new File(filePath))`方法将文件保存到指定的位置。 4. 实现文件下载:创建一个控制器来处理文件下载请求。使用`@GetMapping`注解来定义一个GET请求处理方法,并使用`ResponseEntity<Resource>`作为方法返回类型。通过`ResourceLoader`加载文件资源,并使用`ResponseEntity.ok()`方法将文件发送给客户端。 这只是一个简单的概述,实际上还有很多细节需要处理,比如异常处理、文件类型校验等。具体的实现步骤可以参考Spring Boot官方文档或者相关的教程和示例代码。希望对你有所帮助!如果你还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值