常用的读写文件,和地址转换(win和linux均支持),操作文件再也不是拼接那么的low了

using System;
using System.Diagnostics;
using System.IO;
using System.Text;namespace Cactus.Common
{/// <summary>/// 常用IO操作类/// </summary>public class IOHelper{/// <summary>/// 系统路径转换为web路径地址/// </summary>/// <param name="fullPath">文件完整地址</param>/// <param name="AppPath">应用地址</param>/// <param name="dHear">是否去掉首部的分隔符</param>/// <returns></returns>public static string WebPathParse(string fullPath,string appPath,bool dHear){string sys = Path.DirectorySeparatorChar.ToString();string web = @"/";//web的分隔符if (fullPath.StartsWith(appPath)){string webPath = fullPath.Remove(0, appPath.Length);webPath = webPath.Replace(sys, web);if (webPath.StartsWith(web) == false){webPath = web + webPath;}if (dHear){webPath = IOHelper.RemoveHead(webPath, web);}return webPath;}else {return "";}}/// <summary>/// web路径地址转换为系统路径/// </summary>/// <param name="appPath">应用路径</param>/// <param name="webPath">web路径</param>/// <param name="dHear">是否去掉首部的路径分隔符</param>/// <returns></returns>public static string SysPathParse(string appPath, string webPath, bool dHear){string sys = Path.DirectorySeparatorChar.ToString();string web = @"/";//web的分隔符webPath = webPath.Replace(web, sys);if (dHear){webPath = IOHelper.RemoveHead(webPath, sys);}string result="";if (appPath.EndsWith(sys)){if (webPath.StartsWith(sys)){result = appPath + webPath.Remove(0,1);}else{result = appPath + webPath;}}else {if (webPath.StartsWith(sys)){result = appPath + webPath;}else {result = appPath + sys + webPath;}}return result;}/// <summary>/// 路径解析转换,转化成符合当前系统的路径符号/// </summary>/// <param name="path">路径</param>/// <param name="flag">(路径的类型)1:windows \ 2:linux /(linux和web网页的分隔相符)</param>/// <param name="dHear">是否去掉首部的路径分隔符</param>/// <returns></returns>public static string PathParse(string path, int flag, bool dHear) { string win = @"\";string linux = @"/";string sys=Path.DirectorySeparatorChar.ToString();if (flag == 1){path = path.Replace(win, sys);}else if (flag == 2){path = path.Replace(linux, sys);}if (dHear) {path = IOHelper.RemoveHead(path, sys);}return path;}/// <summary>/// (递归)去掉所有首部出现的字符串/// </summary>/// <param name="str">源字符串</param>/// <param name="headStr">首部出现的字符串</param>/// <returns></returns>public static string RemoveHead(string str, string headStr){if (str.StartsWith(headStr)){str = str.Remove(0, headStr.Length);return RemoveHead(str, headStr);}else {return str;}}/// <summary>  /// 返回指定目录下目录信息  /// </summary>  /// <param name="strDirectory">路径</param>  /// <returns></returns>  public static DirectoryInfo[] GetDirectory(string strDirectory){if (string.IsNullOrEmpty(strDirectory) == false){return new DirectoryInfo(strDirectory).GetDirectories();}return new DirectoryInfo[] { };}/// <summary>  /// 返回指定目录下所有文件信息  /// </summary>  /// <param name="strDirectory">路径</param>  /// <returns></returns>  public static FileInfo[] GetFiles(string strDirectory){if (string.IsNullOrEmpty(strDirectory) == false){return new DirectoryInfo(strDirectory).GetFiles();}return new FileInfo[] { };}/// <summary>///  返回指定目录下过滤文件信息  /// </summary>/// <param name="strDirectory">目录地址</param>/// <param name="filter"></param>/// <returns></returns>public static FileInfo[] GetFiles(string strDirectory, string filter){if (string.IsNullOrEmpty(strDirectory) == false){return new DirectoryInfo(strDirectory).GetFiles(filter, SearchOption.TopDirectoryOnly);}return new FileInfo[] { };}/// <summary>/// debug输出/// </summary>/// <param name="ex"></param>public static void WriteDebug(Exception ex){Debug.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));Debug.WriteLine("Data:" + ex.Data + Environment.NewLine+ " InnerException:" + ex.InnerException + Environment.NewLine+ " Message:" + ex.Message + Environment.NewLine+ " Source:" + ex.Source + Environment.NewLine+ " StackTrace:" + ex.StackTrace + Environment.NewLine+ " TargetSite:" + ex.TargetSite);}/// <summary>/// 控制台数据错误/// </summary>/// <param name="ex"></param>public static void WriteConsole(Exception ex){Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));Console.WriteLine("Data:" + ex.Data + Environment.NewLine+ " InnerException:" + ex.InnerException + Environment.NewLine+ " Message:" + ex.Message + Environment.NewLine+ " Source:" + ex.Source + Environment.NewLine+ " StackTrace:" + ex.StackTrace + Environment.NewLine+ " TargetSite:" + ex.TargetSite);}/// <summary>/// 错误记录/// </summary>/// <param name="ex"></param>public static void WriteLog(Exception ex){WriteLog(ex,null);}/// <summary>/// 错误记录/// </summary>/// <param name="ex">错误信息</param>/// <param name="appendInfo">追加信息</param>public static void WriteLog(Exception ex, string appendInfo) {if (string.IsNullOrEmpty(appendInfo)){WriteLog("Data:" + ex.Data + Environment.NewLine+ " InnerException:" + ex.InnerException + Environment.NewLine+ " Message:" + ex.Message + Environment.NewLine+ " Source:" + ex.Source + Environment.NewLine+ " StackTrace:" + ex.StackTrace + Environment.NewLine+ " TargetSite:" + ex.TargetSite);}else {WriteLog("Data:" + ex.Data + Environment.NewLine+ " InnerException:" + ex.InnerException + Environment.NewLine+ " Message:" + ex.Message + Environment.NewLine+ " Source:" + ex.Source + Environment.NewLine+ " StackTrace:" + ex.StackTrace + Environment.NewLine+ " TargetSite:" + ex.TargetSite + Environment.NewLine+ " appendInfo:" + appendInfo);}}/// <summary>/// 写log/// </summary>/// <param name="InfoStr"></param>public static void WriteLog(string InfoStr){WriteLog(InfoStr, AppDomain.CurrentDomain.BaseDirectory + Path.DirectorySeparatorChar + "Log");}/// <summary>/// 写log(自动时间log)/// </summary>/// <param name="InfoStr">内容</param>/// <param name="FilePath">目录地址</param>public static void WriteLog(string InfoStr, string DirPath){WriteLog(InfoStr, DirPath, Encoding.UTF8);}/// <summary>/// 写log(自动时间log)/// </summary>/// <param name="InfoStr">内容</param>/// <param name="DirPath">目录地址</param>/// <param name="encoding">编码</param>public static void WriteLog(string InfoStr, string DirPath, Encoding encoding){FileStream stream = null;System.IO.StreamWriter writer = null;try{string logPath = DirPath;if (Directory.Exists(logPath) == false){Directory.CreateDirectory(logPath);}string filepath = logPath + Path.DirectorySeparatorChar + "log_" + DateTime.Now.ToString("yyyyMMddHH") + ".txt";if (File.Exists(filepath) == false){stream = new FileStream(filepath, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite);}else{stream = new FileStream(filepath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);}writer = new System.IO.StreamWriter(stream, encoding);writer.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));writer.WriteLine(InfoStr);writer.WriteLine("");}finally{if (writer != null){//writer.Close();
                    writer.Dispose();}//if (stream != null)//{//    //stream.Close();//    stream.Dispose();//}
            }}/// <summary>/// 写log到指定文件(不存在就创建)/// </summary>/// <param name="InfoStr">内容</param>/// <param name="FilePath">文件地址</param>public static void WriteLogToFile(string InfoStr, string FilePath){WriteLogToFile(InfoStr, FilePath,Encoding.UTF8);}/// <summary>/// 写log到指定文件(不存在就创建)/// </summary>/// <param name="InfoStr">内容</param>/// <param name="FilePath">文件地址</param>/// <param name="encoding">编码</param>public static void WriteLogToFile(string InfoStr, string FilePath, Encoding encoding){FileStream stream = null;System.IO.StreamWriter writer = null;try{string logPath = FilePath;if (File.Exists(logPath) == false){stream = new FileStream(logPath, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite);}else{stream = new FileStream(logPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);}writer = new System.IO.StreamWriter(stream, encoding);writer.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));writer.WriteLine(InfoStr);writer.WriteLine("");}finally{if (writer != null){//writer.Close();
                    writer.Dispose();}//if (stream != null)//{//    //stream.Close();//    stream.Dispose();//}
            }}/// <summary>/// 写内容到指定文件(不存在就创建)/// </summary>/// <param name="InfoStr">内容</param>/// <param name="FilePath">文件地址</param>/// <param name="encoding">编码</param>/// <param name="append">是否追加</param>public static void WriteInfoToFile(string InfoStr, string FilePath, Encoding encoding,bool append){FileStream stream = null;System.IO.StreamWriter writer = null;try{string logPath = FilePath;if (File.Exists(logPath) == false){stream = new FileStream(logPath, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite);writer = new System.IO.StreamWriter(stream, encoding);}else{//存在就覆盖writer = new System.IO.StreamWriter(logPath, append, encoding);}writer.Write(InfoStr);}finally{if (writer != null){//writer.Close();
                    writer.Dispose();}//if (stream != null)//{//    //stream.Close();//    stream.Dispose();//}
            }}/// <summary>/// /// </summary>/// <param name="InfoStr"></param>/// <param name="FilePath"></param>/// <param name="encoding"></param>public static void WriteInfoToFile(string InfoStr, string FilePath, Encoding encoding) {WriteInfoToFile(InfoStr, FilePath, encoding,false);}/// <summary>/// /// </summary>/// <param name="InfoStr"></param>/// <param name="FilePath"></param>public static void WriteInfoToFile(string InfoStr, string FilePath){WriteInfoToFile(InfoStr, FilePath, Encoding.UTF8, false);}/// <summary>/// /// </summary>/// <param name="datagram"></param>/// <param name="FilePath"></param>/// <param name="callback"></param>/// <param name="numBytes"></param>public static void AsyncWriteLog(byte[] datagram, string FilePath, AsyncCallback callback, int numBytes){FileStream stream = null;try{string logPath = FilePath;if (File.Exists(logPath) == false){stream = new FileStream(logPath, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite);}else{stream = new FileStream(logPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);}if (stream.CanWrite){stream.BeginWrite(datagram, 0, numBytes, callback, "AsyncWriteLog_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));}else{throw new Exception("文件无法写入,文件或只读!");}}finally{if (stream != null){//stream.Close();
                    stream.Dispose();}}}/// <summary>/// /// </summary>/// <param name="datagram"></param>/// <param name="FilePath"></param>/// <param name="numBytes"></param>public static void AsyncWriteLog(byte[] datagram, string FilePath, int numBytes){AsyncWriteLog(datagram, FilePath, new AsyncCallback(AsyncCallbackFunc), numBytes);}public static void AsyncCallbackFunc(IAsyncResult result){FileStream filestream = result.AsyncState as FileStream;filestream.EndWrite(result);filestream.Close();}/// <summary>/// 文本转义(方便讲文本转换成C#变量代码)/// 例子 " 转化成 string str="\"";/// </summary>/// <param name="str"></param>/// <returns></returns>public static string ToEscape(string str, string m_var){/*"           \"\           \\*/str = str.Trim();str = str.Replace("\\", "\\\\");str = str.Replace("\"", "\\\"");return "string " + m_var + "=\"" + str + "\";";}public static string ReadTxt(string filePath) {return ReadTxt(filePath, Encoding.UTF8);}/// <summary>/// /// </summary>/// <param name="filePath"></param>/// <param name="enc"></param>/// <returns></returns>public static string ReadTxt(string filePath, Encoding enc) {FileStream stream = null;System.IO.StreamReader reader = null;string result = "";try{if (File.Exists(filePath) == false){stream = new FileStream(filePath, FileMode.CreateNew, FileAccess.Read, FileShare.ReadWrite);}else{stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);reader = new System.IO.StreamReader(stream, enc);result = reader.ReadToEnd();}}catch (Exception e){WriteLog(e);}finally{if (reader != null){//reader.Close();
                    reader.Dispose();}//if (stream != null)//{//    //stream.Close();//    stream.Dispose();//}
            }return result;}/// <summary>/// 读取Appliction目录下的文件/// </summary>/// <param name="filePath"></param>/// <param name="enc"></param>/// <returns></returns>public static string AppReadTxt(string filePath, Encoding enc){string appPath = AppDomain.CurrentDomain.BaseDirectory;string path = appPath + filePath;return ReadTxt(path, enc);}/// <summary>/// 读取Appliction目录下的文件(UTF-8)/// </summary>/// <param name="filePath"></param>/// <returns></returns>public static string AppReadTxt(string filePath){return AppReadTxt(filePath, System.Text.Encoding.UTF8);}}
}

转载于:https://www.cnblogs.com/RainbowInTheSky/p/5561717.html

IOHelper(自制常用的输入输出的帮助类)相关推荐

  1. Java开发常用包、接口和类

    一.JDK中常用包 1.java.lang 这个是系统的基础类: 2.java.io 这里面是所有输入输出有关的类,比如文件操作等: 3.java.nio 为了完善 io 包中的功能,提高 io 包中 ...

  2. java 输入 输出 方法_Java常用的输入输出方法

    对于经常上机刷题的来说,首先得解决输入输出方法,Java的输入输出流在Java学习过程的后面部分才会接触,但是我们可以掌握一些简单的,常用的输入输出方法 首先输出 大家最熟悉的莫过于输出方法,直接用S ...

  3. 学习-Java输入输出之OutputStream类之字节数据输出

    第1关:学习-Java输入输出之OutputStream类之字节数据输出 任务描述 相关知识 什么是 OutputStream 类 OutputStream 类的常用方法 OutputStream 类 ...

  4. Java常用的输入输出语句

    对于经常上机刷题的来说,首先得解决输入输出方法,Java的输入输出流在Java学习过程的后面部分才会接触,但是我们可以掌握一些简单的,常用的输入输出方法 首先输出 大家最熟悉的莫过于输出方法,直接用S ...

  5. c++怎么输入带有空格的字符串_CCF CSP-J/S中常用的输入输出 总结(三)

    实验环境: DEV-C++ 5.11 六.关于文件的输入输出 七.关于string类型变量的赋值和连接操作 八.关于string类型的主要函数和运算 六.关于文件的输入输出 需要使用头文件#inclu ...

  6. php中访问excel文件,PHP中常用的Excel文件访问类及修改 | 学步园

    近日,由于手头项目需要解析web提交的excel文件,不得不看看这个在php中使用比较广泛的excel访问类了.之所以说它使用广泛,是后来在网上查找问题解决方法时才知道它的使用面的. 首先说遇到的问题 ...

  7. Linux自学笔记 | 10 常用命令 - 压缩解压类

    Linux自学笔记 | 10 常用命令 - 压缩解压类 Linux自学笔记 | 01 文件系统和目录结构 Linux自学笔记 | 02 VIM编辑器的安装与使用 Linux自学笔记 | 03 Linu ...

  8. FME进阶视频教程:第1节 FME常用转换器之字符串操作类1

    教程简介 本教程精选工作中使用频率较高的转换器.数据格式读写.其他能提高FME使用水平的技巧及功能进行细致的讲解,而且在教程讲解过程中使用的数据及模板都可以配套下载,通过边看视频教程边对照练习,让大家 ...

  9. java常用地图坐标系转换工具类,支持谷歌,腾讯,百度等主流的地理坐标转换

    package com.shen.springboot.redis.util;import java.util.ArrayList; import java.util.HashMap; import ...

最新文章

  1. 软考之运筹学计算-车床问题
  2. μC/OS Ⅱ之任务就绪表的操作_2012.5.31
  3. SpringCloud实战与原理---快速入门
  4. 0002_20190328_Centos修改系统时间
  5. 【图嵌入】DeepWalk原理与代码实战
  6. pythontkinter真实的例子_Python Tkinter真实的例子
  7. Python进制转换(利用栈)
  8. springBoot方法上面添加@Transactional注解与类上面添加@Transactional注解的区别
  9. 微软12月补丁星期二值得关注的6个0day及其它
  10. Swift - 属性观察者(willSet与didSet)
  11. 图像上采样和图像下采样
  12. Allegro 17.4 PCB设计流程与经验
  13. phy芯片测试寄存器_DM9000寄存器功能详细介绍
  14. node-webkit:开发桌面+WEB混合型应用的神器
  15. Qt设计精美的登录注册界面(包含SQLite数据库应用)
  16. table表格宽带width属性研究
  17. 使用HttpClient的时候报错java.io.IOException: Attempted read from closed stream
  18. Flask 框架(四)— 表单处理
  19. Linux下的桥接模式和Nat模式的区别
  20. c语言Int16_t 什么意思,__IO uint16_t 是什么意思,在定义参数时为什么不直接写成 uint16...

热门文章

  1. Xcode 创建自定义模板
  2. .NET笔试题集(二)
  3. 2009年存储市场10大预测 厂商并购在所难免
  4. 《HTML5+CSS3网页设计入门必读》——1.13 测验
  5. 留言板小程序开发笔记3
  6. 网络编程之-----------进程
  7. 软件测试工程师-Python语言
  8. 手抄Threejs源码之Scene
  9. onenote组织知识体系_我们的家人教给我们有关组织生活的知识
  10. hacker_Hacker Public Radio上的免费软件