读取路径判断文件是否存在,进行删除或者创建

简单的io

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; namespace ComprehensiveTest.com.myio
{
public class IoManager
{
private static IoManager instance = null; public static IoManager Instance
{
get {
if (IoManager.instance == null)
{
IoManager.instance = new IoManager();
}
return IoManager.instance;
}
}
/// <summary>
///
/// </summary>
/// <param name="targetPath"></param>
/// <returns></returns>
public bool CreateFile(string targetPath)
{
if (File.Exists(targetPath))
{
return true;
}
else
{
try
{
//使用这2种方法都可以
//FileStream file = File.Create(targetPath);
FileStream file = new FileStream(targetPath, FileMode.Create);
file.Close();
return true;
}
catch (Exception e)
{
Console.WriteLine("创建文件{0},失败 , 原因 : {1} ", targetPath, e.ToString());
return false;
}
}
}
/// <summary>
/// 获得电脑所有的驱动盘
/// </summary>
/// <returns></returns>
public string[] GetMyLogicalDrives()
{
return Directory.GetLogicalDrives();
}
/// <summary>
/// 移动数据
/// </summary>
/// <param name="oldPath"> 原始的路径 </param>
/// <param name="newPath"> 新的路径 </param>
/// <returns> 操作是否成功 </returns>
public bool MoveFile(string oldPath, string newPath)
{
if (File.Exists(oldPath))
{
try
{
File.Move(oldPath, newPath);
return true;
}
catch (Exception e)
{
Console.WriteLine("移动文件{0},失败 , 原因 : {1} " , oldPath , e.ToString() );
return false;
}
}
else
{
Console.WriteLine("Error , {0}文件不存在!!! " , oldPath );
return false;
}
}
/// <summary>
/// 复制一个文件
/// </summary>
/// <param name="oldPath"></param>
/// <param name="newPath"></param>
/// <returns></returns>
public bool CopyFile(string oldPath, string newPath)
{
if (File.Exists(oldPath))
{
try
{
File.Copy(oldPath, newPath);
return true;
}
catch (Exception e)
{
Console.WriteLine("复制文件{0},失败 , 原因 : {1} ", oldPath, e.ToString());
return false;
}
}
else
{
Console.WriteLine("Error , {0}文件不存在!!! ", oldPath);
return false;
}
}
/// <summary>
/// 删除一个文件
/// </summary>
/// <param name="targetPath"></param>
/// <returns></returns>
public bool DeleteFile( string targetPath )
{
if(File.Exists( targetPath ))
{
try
{
File.Delete(targetPath);
return true;
}
catch (Exception e)
{
Console.WriteLine("删除文件{0},失败 , 原因 : {1} ", targetPath, e.ToString());
return false;
}
}
else
{
Console.WriteLine("Error , {0}文件不存在!!! ", targetPath);
return false;
}
}
/// <summary>
/// 创建一个文件夹
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public bool CreateFolder(string path)
{
if (Directory.Exists(path))
{
Console.WriteLine("文件夹{0}已经存在", path);
return true;
}
else
{
try
{
DirectoryInfo dirInfo = Directory.CreateDirectory(path);
Console.WriteLine("创建文件夹成功 , 创建时间为{0}", Directory.GetCreationTime(path));
return true;
}
catch (Exception e)
{
Console.WriteLine("创建文件夹失败 , 失败原因{0}", e.ToString());
return false;
}
}
}
/// <summary>
/// 删除文件夹
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public bool DeleteFolder(string path)
{
if (Directory.Exists(path))
{
try
{
Directory.Delete(path);
return true;
}
catch (Exception e)
{
Console.WriteLine("删除文件夹失败 , 失败原因{0}", e.ToString());
return false;
}
}
else
{
return true;
}
}
/// <summary>
///
/// </summary>
/// <param name="oldPath"></param>
/// <param name="newPath"></param>
/// <returns></returns>
public bool MoveFolder(string oldPath , string newPath)
{
if (Directory.Exists(oldPath))
{
try
{
Directory.Move(oldPath, newPath);
return true;
}
catch (Exception e)
{
Console.WriteLine("移动文件夹{0},失败 , 原因 : {1} ", oldPath, e.ToString());
return false;
}
}
else
{
Console.WriteLine("Error , {0}文件夹不存在!!! ", oldPath);
return false;
}
}
/// <summary>
/// 读取文件( 一个个读 )老是在流以外 , 无法读到正确的值
/// </summary>
/// <param name="targetPath"></param>
/// <returns></returns>
public bool ReadOneByOneTest(string targetPath)
{
if (File.Exists(targetPath))
{
FileStream fs = new FileStream(targetPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
br.BaseStream.Seek(, SeekOrigin.Begin); //将指针设到开头
while (br.BaseStream.Position < br.BaseStream.Length)
{
try
{
Console.WriteLine(br.ReadString());
}
catch (EndOfStreamException e)
{
Console.WriteLine("已经到了结尾 {0}", e.ToString());
}
}
br.Close();
fs.Close();
return true;
}
else
{
return false;
}
}
/// <summary>
/// 读取文本
/// </summary>
/// <param name="targetPath"></param>
/// <returns></returns>
public bool ReadCommon(string targetPath)
{
if (File.Exists(targetPath))
{
//using (StreamReader sr = File.OpenText(targetPath)) // 读中文将乱码
using( StreamReader sr = new StreamReader( targetPath , UnicodeEncoding.GetEncoding("GB2312"))) // 解决中文乱码问题
{
string readStr;
while ((readStr = sr.ReadLine()) != null)
{
Console.WriteLine(readStr);
}
sr.Close();
}
return true;
}
else
{
return false;
}
}
/// <summary>
///
/// </summary>
/// <param name="targetPath"></param>
/// <param name="content"></param>
/// <param name="isNendWarp"></param>
/// <returns></returns>
public bool WriteCommon(string targetPath , string content , bool isNendWarp )
{
if (File.Exists(targetPath))
{
//using (StreamWriter sw = File.AppendText(targetPath)) // 中文乱码
using( StreamWriter sw = new StreamWriter( targetPath , true ,UnicodeEncoding.GetEncoding("GB2312"))) // 解决中文乱码问题
{
if (isNendWarp)
{
sw.WriteLine(content);
}
else
{
sw.Write(content);
}
sw.Close();
}
return true;
}
else
{
return false;
}
}
}
}

c#简单的io的更多相关文章

  1. Lua 简单的IO交互 和迷宫代码

    function room1 () print("in room1") local move = io.read() if move == "south" th ...

  2. Linux系统编程:简单文件IO操作

    使用Linux的文件API,经常看见一个东西,叫做文件描述符. 什么是文件描述符? (1)文件描述符其实实质是一个数字,这个数字在一个进程中表示一个特定的含义,当我们open打开一个文件时,操作系统在 ...

  3. 开发简单的IO多路复用web框架

    自制web框架 1.核心IO多路复用部分 # -*- coding:utf-8 -*- import socket import select class Snow(): def __init__(s ...

  4. 高性能IO模型浅析

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking  ...

  5. IO模型

    前言 说到IO模型,都会牵扯到同步.异步.阻塞.非阻塞这几个词.从词的表面上看,很多人都觉得很容易理解.但是细细一想,却总会发现有点摸不着头脑.自己也曾被这几个词弄的迷迷糊糊的,每次看相关资料弄明白了 ...

  6. JAVA NIO Scatter/Gather(矢量IO)

    矢量IO=Scatter/Gather:   在多个缓冲区上实现一个简单的IO操作.减少或避免了缓冲区拷贝和系统调用(IO)   write:Gather 数据从几个缓冲区顺序抽取并沿着通道发送,就好 ...

  7. 泛函编程(36)-泛函Stream IO:IO数据源-IO Source & Sink

    上期我们讨论了IO处理过程:Process[I,O].我们说Process就像电视信号盒子一样有输入端和输出端两头.Process之间可以用一个Process的输出端与另一个Process的输入端连接 ...

  8. 服务器端高性能的IO模型 转自酷勤网

    服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(BlockingIO):即传统的IO模型. (2)同步非阻塞IO(Non-blockingIO):默认创建的soc ...

  9. Linux IO Scheduler(Linux IO 调度器)

    每个块设备或者块设备的分区,都对应有自身的请求队列(request_queue),而每个请求队列都可以选择一个I/O调度器来协调所递交的request.I/O调度器的基本目的是将请求按照它们对应在块设 ...

随机推荐

  1. BGP 优选短的AS号路径实践总结

    BGP优选AS号短的路径作为首选路由的验证结果 1.结论: (1)EBGP会优选AS号少的路径作为转发路径,当优选路径失效时,再选择次选路由. (2)EBGP邻居建立在直连设备之间. (3)IBGP邻 ...

  2. loadrunner 脚本优化-参数化之Parameter List参数同行取值

    脚本优化-参数化之Parameter List参数同行取值 by:授客 QQ:1033553122 select next row 记录选择方式 Same line as,这个选项只有当参数多余一个时 ...

  3. 添加/删除/修改Windows 7右键的“打开方式”

    右键菜单添加/删除"打开方式" 此"打开方式"非系统的"打开方式",二者可以并存. 右键菜单添加"打开方式" 在HKEY ...

  4. RecyclerView 高度不能随着Item数量 自适应高度

    在最近项目中遇到 ,在RecyclerView加载list数据时,高度无法自适应增长,看了很多博客,各种尝试,都没有解决这个问题,在某个博客中,讲到此解决方法,在此记录下. 即在RecyclerVie ...

  5. matlab练习程序(马尔可夫聚类MCL)

    本文主要参考: https://wenku.baidu.com/view/b7907665caaedd3383c4d31b.html https://blog.csdn.net/u010376788/ ...

  6. Python lambda介绍

    转自:http://www.cnblogs.com/evening/archive/2010/03/29/2423554.html Python lambda 介绍   在学习python的过程中,l ...

  7. 【转】JSF中的三大核心组件 UI标签的详细介绍和使用举例

    JSF提供了大量的UI标签来简化创建视图.这些UI标签类似于ASP.NET中的服务器组件.使用这些标签,可以通过其value,binding,action,actionListener等属性直接绑定到 ...

  8. Entity Framework 5.0.0 Function Import 以及 ODP. NET Implicit REF CURSOR Binding使用简介

    源代码 概要: 1,说明如何使用Entity Framework中的function import功能. 2,说明如何使用ODP.NET的隐式REF CURSOR绑定(implicit REF CUR ...

  9. ASP.NET -- WebForm -- HttpRequest类的方法和属性

    ASP.NET -- WebForm --  HttpRequest类的方法和属性 1. HttpRequest类的方法(1) BinaryRead: 执行对当前输入流进行指定字节数的二进制读取. ( ...

  10. LeetCode算法题-Convert a Number to Hexadecimal(Java实现)

    这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...