C#开发小经验分享之一文件操作

C#调用百度地图API经验分享(一) 最近被安排了开发电子地图的差事,以前只听说过百度谷歌等有免费的开源库可供调用,但是没有自己做过具体的东西,现在活既然上面安排了,咱就得学哪,下面我将把我最近自己总结的一些知识与大家分享。(强烈建议大家有分享精神,如果大家都很吝啬自己的知识,你以后上百度,谷歌,优快云,博客园等地方也将不会看到任何有价值的信息了,这是很可怕的趋势,因为我就是从这些共享的资源里学到了知识。)好了,不废话了,进入主题。 阅读详情

1.文件操作

System.IO.Directory.GetFiles("*.xml").ToList().ForEach(p => { "dosomething here" });

1-1.按照行读取文件数据

原始文件
aa
bb
cc
dd
jj
gg

StreamReader sr = new StreamReader(@"C:\1.txt");

string strContent= sr.ReadToEnd();

string[] strArr = strContent.Split('\n');

得到的是单行数据

1-2.获取根目录
AppDomain.CurrentDomain.BaseDirectory得到程序当前运行中根目录

1-3.linq xml中的Descendants()遍历根节点下所有子节点的集合
例如:
<A>
  <B>
    <C>
      <d></d>
      <e></e>
    </C>
  </B>
</A>
A.Descendants()结果为 B
A.Descendants().Descendants()结果为C
A.Descendants().Descendants().Descendants()结果为  d,e

1-3.文件是否被占用api函数
        [DllImport("kernel32.dll")]
        public static extern IntPtr _lopen(string lpPathName, int iReadWrite);
        [DllImport("kernel32.dll")]
        public static extern bool CloseHandle(IntPtr hObject);
        public const int OF_READWRITE = 2;
        public const int OF_SHARE_DENY_NONE = 0x40;
        public readonly IntPtr HFILE_ERROR = new IntPtr(-1);
        private void button1_Click(object sender, EventArgs e)
        {
            string vFileName = @"c:\1.xml";
            if (!File.Exists(vFileName))
            {
                MessageBox.Show("文件都不存在!");
                return;
            }
            IntPtr vHandle = _lopen(vFileName, OF_READWRITE | OF_SHARE_DENY_NONE);
            if (vHandle == HFILE_ERROR)
            {
                MessageBox.Show("文件被占用!");
                return;
            }
            CloseHandle(vHandle);
            MessageBox.Show("没有被占用!");
        }

1-4.图片和base64互相转换

 /// <summary>
        /// 图片转换成字节流
        /// </summary>
        /// <param name="img">要转换的Image对象</param>
        /// <returns>转换后返回的字节流</returns>
        public static byte[] ImgToByt(System.Drawing.Image img)
        {
            MemoryStream ms = new MemoryStream();
            byte[] imagedata = null;
            img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            imagedata = ms.GetBuffer();
            return imagedata;
        }
        /// <summary>
        /// 字节流转换成图片
        /// </summary>
        /// <param name="byt">要转换的字节流</param>
        /// <returns>转换得到的Image对象</returns>
        public static System.Drawing.Image BytToImg(byte[] byt, string imgUrl)
        {
            MemoryStream ms = new MemoryStream(byt);

            System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
            img.Save(imgUrl);
            return img;
        }
        //
        /// <summary>
        /// 根据图片路径返回图片的字节流byte[]
        /// </summary>
        /// <param name="imagePath">图片路径</param>
        /// <returns>返回的字节流</returns>
        public static byte[] getImageByte(string imagePath)
        {
            FileStream files = new FileStream(imagePath, FileMode.Open);
            byte[] imgByte = new byte[files.Length];
            files.Read(imgByte, 0, imgByte.Length);
            files.Close();
            return imgByte;
        }

1-5 遍历文件夹下的文件夹

 public static void GetAllDirList(string strBaseDir)
       {
           DirectoryInfo di = new DirectoryInfo(strBaseDir);
           DirectoryInfo[] diA = di.GetDirectories();
           for (int i = 0; i < diA.Length; i++)
           {
               al.Add(diA[i].FullName);
               //diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中
               GetAllDirList(diA[i].FullName);

           }

       }

1-6 判断文件是否被占用

        [DllImport("kernel32.dll")]
        public static extern IntPtr _lopen(string lpPathName, int iReadWrite);
        [DllImport("kernel32.dll")]
        public static extern bool CloseHandle(IntPtr hObject);
        public const int OF_READWRITE = 2;
        public const int OF_SHARE_DENY_NONE = 0x40;
        public readonly IntPtr HFILE_ERROR = new IntPtr(-1);
        private void button1_Click(object sender, EventArgs e)
        {
            string vFileName = @"c:\1.xml";
            if (!File.Exists(vFileName))
            {
                MessageBox.Show("文件都不存在!");
                return;
            }
            IntPtr vHandle = _lopen(vFileName, OF_READWRITE | OF_SHARE_DENY_NONE);
            if (vHandle == HFILE_ERROR)
            {
                MessageBox.Show("文件被占用!");
                return;
            }
            CloseHandle(vHandle);
            MessageBox.Show("没有被占用!");
        }

1-7 


【分享C#项目开发经验】 【分享C#项目开发经验】实例是最好的老师,学习C#过程中,我们查资料,编写了如下的一些项目案例,通过这些案例,我也积累了C#的开发经验。现在总结了一下,写成了文稿,把他们公布出来,希望对你有所帮助。浏览器使用.NET组件编写一个有特殊功能的浏览器。http://rzchina.net/node/12413邮件发送程序使用C#编写一个邮件发送程序。http://rzchina.net/n 阅读详情

相关推荐

C# 中多种通讯协议的使用及开发经验总结

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它提供了可靠的数据传输,确保数据在传输过程中不会丢失、重复或乱序。UDP(User Datagram Protocol)是一种无连接的传输层协议,它不保证数据的可靠传输,但具有传输速度快、开销小的特点。常用于实时性要求较高的场景,如视频流、音频流等。串口(Serial Port)是一种常见的计算机与外部设备进行通信的接口,它通过串行方式传输数据。

Code365 1202

C#判断文件是否占用

        [DllImport("kernel32.dll")]        public static extern IntPtr _lopen(string lpPathName, int iReadWrite);        [DllImport("kernel32.dll")]        public static extern bool CloseHandle(IntPtr...

a1003434346的博客 972

C#窗体应用调用谷歌地图经验分享(菜鸟的分享)

先说下,这个东西无需太多JS基础和高深只是,只需要一点面向对象基础+一点C#基础。 最近在做毕业设计,项目中需要嵌入谷歌地图,用红色标记(就是想图钉的那个)来显示监测站点的方位。对于我这种没什么项目经验,没有学过javaScript,刚学会一点点C#的菜鸟来说,根本没有头绪。在几天的学习中,最终还是完成了任务。 首先很感谢一位大神的百度地图经验分享 http://blog.youkuaiyun.com/k

Programming 9746

C# 文件操作完全指南

本文全面介绍了C#中的文件操作方法,主要涵盖以下内容:1)常用文件操作类(File、FileInfo、Directory等)的基本用法;2)文本和二进制文件的读写操作;3)文件操作实践技巧,包括异常处理、文件监控和临时文件处理;4)路径操作方法;5)异步文件操作实现。文章强调在实际开发中应注意资源释放、异常处理、异步优化和跨平台兼容性等问题。通过丰富的代码示例,展示了C#强大而全面的文件操作功能。

2402_83238897的博客 328

激光打标机二次开发C#实例分享(附带实例源码)

前言 本文章是针对金橙子激光打标机,使用C#进行二次开发分享。金橙子的打标机有两种不同的板卡,一般他们在卖打标机的时候如果不特殊说明使用的板卡是不支持二次开发的,如果想进行二次开发需要提前告诉他们购买支持二次开发的板卡,这个也是我血的教训。 此篇文章是由于我之前写的一篇博客https://blog.youkuaiyun.com/qq_17486399/article/details/101363368,这里面说明了开发过程中可能遇到的问题,并没有实例代码讲解,很多同学就私信我问我要源码,这里我就把源码共享出来供大家

谁念西风独自凉 1万+

【论文精读】Latent Diffusion

Latent Diffusion

weixin_44934783的博客 4476

C# _lopen判断文件是否正在被使用

今天很无语,要解决一个问题,Silverlight中无法对用户打开的文件进行判断,是否打开,沙箱模式运作,出于安全性考虑,是无法获得 本地文件的绝对路径,无法调用API来判断实现这功能,最后还是用Trycatch来解决。 C#能够调用的API都能从以下网站查到: API查询网站:http://www.webtropy.com/articles/W...

weixin_30478619的博客 317

Multisim实战:从8选1到32选1数据选择器的完整搭建指南(附常见问题解决)

本文提供了一份详尽的Multisim实战指南,手把手教你从基础的8选1数据选择器开始,逐步级联搭建16选1乃至32选1数据选择器。文章深入剖析了级联的核心逻辑、片选方案以及使用译码器的专业方法,并附带了电源连接、输出冲突、信号毛刺等常见问题的诊断与解决技巧,帮助电子工程学生和爱好者扎实掌握数字电路的系统设计与仿真调试。

dd012的博客 730

初识IntPtr

近来研究指针,在C#中谈指针,就不得不谈IntPtr,以下是我对IntPtr的初步了解,一些基础。 一:什么是IntPtr 先来看看MSDN上说的:用于表示指针或句柄的平台特定类型。这个其实说出了这样两个事实,IntPtr 可以用来表示指针或句柄、它是一个平台特定类型。对于它的解释,这个哥们写的比较好:It's a class that wraps a pointer that i

Qcontriver的专栏 4万+

halcon C++编程 第4讲 HObject/HImage Mat相互转换(tcy)

网上有很多相互转换程序,但并不知那个正确,本文对相互转换后的结果和原对象比较是否相同判断转换是否正确。经测试ok.本文包括转换代码及测试是否相同。 1.转换程序: /************************************ HObject转为Mat:time:2021/3/16 V1.0 *************************************/ cv::Mat HalconClass::HObjectToMat(const HalconCpp::HObject&..

tcy-阿春 4933

视频编解码——视频编解码器工作原理

目录什么是视频编解码器为什么需要视屏编解码器视频编码器与数字视频容器时评编码器的历史 什么是视频编解码器 简单来说就是用于压缩或解压数字视频的软件或硬件 编码是信息从一种形式或格式转换为另一种形式的过程,解码是编码的反向。 适用于视频 编码是将视频、音频的原始格式的文件通过压缩技术转换成另一种格式(视频如h.264,h.265,m-jpeg等)。 解码是编码的反向过程。应用中,一般是将h.264,h.265格式数据解码成如YUV格式裸流交给显示器显示。 为什么需要视屏编解码器 需要在有限的带宽或存储空间

路人coder 1万+

C#进行Visio二次开发之界面设计及架构设计

写C#进行Visio二次开发的系列文章有很多篇了,都是写一些经验总结和技术知识的分享,本文继续来探讨这方面开发的一些心得,主要介绍下WinForm界面的设计和Visio软件的架构设计。 先看看我花了N个月的业余时间完成的软件概貌,然后大家一起讨论下相关的技术知识。 软件界面主要有菜单区、工具条区、图纸内容区、右边的管理区、状态条区等等,主要注意的是采用...

weixin_33874713的博客 480

科研绘图避坑指南:用PyMol制作期刊级蛋白-配体相互作用图(含氢键显示技巧)

本文是一份专业的科研绘图避坑指南,详细讲解如何利用PyMol软件制作符合期刊发表标准的蛋白-配体相互作用图。文章重点分享了从构图逻辑、精准选择到氢键等相互作用的艺术化表达技巧,并提供了视觉优化与期刊适配的终极参数设置,帮助科研人员产出兼具科学严谨性与视觉美感的专业图表。

weixin_29292431的博客 270

2014年暑假c#学习笔记目录

2014年暑假c#学习笔记 一、C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref、out参数 二、C#winform编程 1.C#WinForm基础制作简单计算器 2.C#WinForm基础Email分析器 3.C#WinForm基础累加器 4....

weixin_30725467的博客 115

C# + NAudio:构建支持实时音频处理的语音聊天应用(含回声消除)

本文介绍了如何利用C#和NAudio库开发实时语音聊天应用,重点实现回声消除功能。首先概述了NAudio库在音频处理中的作用,包括音频录制、播放和实时处理能力。然后详细讲解了构建基础语音聊天应用的过程,包括麦克风录制和扬声器播放的实现。接着深入探讨了回声消除的原理和实现方法,提出通过比较麦克风输入和扬声器输出的音频信号来消除回声,并给出了核心代码示例。最后,文章还讨论了性能优化方向,如多线程处理和网络传输扩展。该方案为开发高质量实时语音应用提供了实用参考。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1010

061、LQR(线性二次型调节器)控制基础

本文介绍了LQR(线性二次型调节器)控制在飞控系统中的应用。作者通过一次四旋翼炸机事故引出PID控制的局限性,详细讲解了LQR的数学原理、权重矩阵的物理意义以及实际工程实现方法。文章对比了LQR与PID的控制效果,指出LQR在鲁棒性方面的优势,同时也分析了其存在稳态误差等缺点。最后总结了LQR在飞控中的适用场景,建议将LQR与PID结合使用,并预告了下一章将讨论带积分项的LQI控制。全文包含具体案例、代码实现和调参经验,为飞控算法开发者提供了实用指导。

2401_88858637的博客 720

简易记事本开发(第二次C#作业)

要求:用C#语言编写简易记事本。

yihuayaocao的专栏 1380

SAP_MM模块库存概览俄罗斯报表简介

本文介绍了SAP MM模块中"库存概览俄罗斯报表"的功能与应用。该报表主要用于查看物料在不同库存地点和类型的库存情况,并满足俄罗斯当地法规要求。文章解释了"俄罗斯报表"可能指代本地化合规库存报表或客户自定义报表,详细说明了事务代码J3RFLVMOBVEDH的操作步骤,包括公司代码、物料编码、日期范围等查询条件,并解释了报表中各字段含义如期初期末库存数量与价值。最后强调在物料分类账处理完成后使用该报表可获得实际库存价值,为SAP用户提供了实用的库存管理参考。

我小时候很黑的博客 1087

跟随菜鸟学习C#——C#操作Excel

最近工作不是太忙,是时候把自己的C#技术巩固一下了正好赶上老大让我们研究学习C#操作Excel,我就把自己如何学习的和大家分享一下,我刚入行没多久,也就是一个菜鸟,请大家多多指点,有什么好的学习方法,也可以共享一下。        刚开始非常抓瞎,不知道从何入手,于是就从网上找了一些别人的代码作参考,但是很多都看不懂,后来终于找到一个简单的,然后自己又加了一些注释,请大家参阅 using Sy

gtx3788的博客 284

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

我的 C# 学习经验分享

.NET 20 周年的学习挑战赛刚结束了第一阶段, 不知道各位小伙伴参加了没有 ? 有人问现在学习 C# 是不是有点过时 ? 也有人问现在 C# 能做什么 ?更有人问学习 C# 能否找到工作 ? 或者你从不同的专家 ,不同的从业者可以有不同的答案 。但我更关心一个比较基础而且对更多人希望得到解答的问题 - 如何学习好 C# 。 我是一名 .NET 老兵 , 虽然我的技术栈不断拓宽 , 但从来没有放弃 C# 。 希望利用该文章 , 和大家分享一些 C# 学习心得。 学习环境 早期学习 C# , 相信大家.

Kinfey 4783

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Halcon的C#二次开发及经验分享

本文涉及面较广,因此很难在所有方面都讲解得很详细,故适合具有一定Halcon开发经验的人阅读。 1、Halcon二次开发的两种方式 ① 使用C#的语法方式逐句改写Halcon代码 优点:各种变量的类型清楚,可读性强,改写后代码行数几乎不会增加多少。 缺点:改写工作量大,容易出错,如果Halcon代码量大,后期将难以更新维护。 ② 封装成函数导出 (推荐) 优点:操作简单,对开发人员编程...

striving1234的专栏 1957

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

.Net面试经验总结(.Net/C#)

先说一下我的的基本情况,LZ是某普通二本的自动化专业的学生,大学阶段也就学了一些基础的C语言,大四时接触java,然后学了一点,但是没有找到这方面的工作,基本遇到的都是要培训的,后面进入一家使用C#开发的公司,这才开启了我的C#之旅,虽然有两年多的开发经验,但感觉自己还是个小白,还有很多的东西需要学习,这也是我做开发以来的第一次跳槽吧,总结一下面试的一些经验,也希望能够帮助到正在找.Net的小伙伴...

lovestj的博客 1万+
下一篇: ASP.NET中WebSocket 的使用总结
sinbadxia
博客等级 码龄18年 3粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值