精华内容
下载资源
问答
  • CSharp自定义文件的属性

    千次阅读 2017-09-30 15:27:55
    How to set custom attributes / file properties on a file in C# .Net In the office here we have developed a document management system, which uses Custom Properties on PDF and DWG files to kee

    How to set custom attributes / file properties on a file in C# .Net

    In the office here we have developed a document management system, which uses Custom Properties on PDF and DWG files to keep a track of what revision etc they are. In my Revit API development, we required an easy way of settings these from inside of Revit, so I set about creating a plotting external command using the new Print methods in the 2009 API and PDF995's ini file. 

    Once I'd printed the documents, I wanted to rename them and set the custom properties such as Revision, drawer, designer etc. After much searching, I discovered what you need to get is "DSOFile" from Microsoft, it is intended for editing Microsoft Word document properties, but works on anything. There is an easy to understand VB.Net example included in the download. 

    DSO File works by adding a reference to the DLL and creating a new DSOFile.OleDocumentPropertiesClass, and then performing actions on that. So, I created a new: private DSOFile.OleDocumentPropertiesClass m_file; Then in my constructor for my ParamaterSetter class I created an instance of OleDocumentPropertiesClass and then called the Open() Method with my filename: 

     //create new isntance of OleDocumentPropertiesClass 
    m_file = new DSOFile.OleDocumentPropertiesClass(); 
    // select the file you would like to open 
    m_file.Open(path, false, DSOFile.dsoFileOpenOptions.dsoOptionDefault); 

    From there you can perform actions such as : m_file.CustomProperties.Add(key, ref valueForKey); where key is the name of your property, and valueForKey is the value. For more standard properties, such as the "Summary" properties (in summary tab when you go properties on the file), you can access them directly, such as: m_file.SummaryProperties.Comments = value; 

    For reference, here is the utility class I use: 

    class FileParameterSetter {
    
            //DSOFile document
            private DSOFile.OleDocumentPropertiesClass m_file;
    
            
            public FileParameterSetter(string path) {
                //create new isntance of OleDocumentPropertiesClass
                m_file = new DSOFile.OleDocumentPropertiesClass();
    
                // select the file you would like to open
                m_file.Open(path, false, DSOFile.dsoFileOpenOptions.dsoOptionDefault);
    
            }
    
            /// <summary>
            /// Sets a custom property in the file.
            /// </summary>
            /// <param name="key">key to set</param>
            /// <param name="value">value to set to key</param>
            public void SetCustomproperty(string key, string value) {
                try {
                    object valueForKey; 
    
                    //check for valid inputs
                    if ((key == null) || (value == null) || (key.Length == 0) || (value.Length == 0)) {
                        //Error, no key or value.
                        return;
                    }
    
                    valueForKey = value;
    
                    //write to file
                    m_file.CustomProperties.Add(key, ref valueForKey);
    
                    //save change
                    m_file.Save();
                } catch(Exception ex) {
    
                    System.Windows.Forms.MessageBox.Show("There was an error adding properties to PDF file: " +
                                                            ex);
    
                }
            }
    
            /// <summary>
            /// Saves and closes document
            /// </summary>
            public void Close() {
               m_file.Close(true);
            }
    
            /// <summary>
            /// Sets a standard property, such as Comments, Subject, Title etc
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            public void SetStandardProperty(string key, string value) {
    
                if (key.Equals("Comments")) {
                    m_file.SummaryProperties.Comments = value;
                }
                if (key.Equals("Subject")) {
                    m_file.SummaryProperties.Subject = value;
                }
                if (key.Equals("Title")) {
                    m_file.SummaryProperties.Title = value;
                }
            }
            
        }
    展开全文
  • CSharp遍历文件目录的递归与非递归实现 遍历文件与文件夹的程序可以用递归实现,也可以用链表List,队列Queue,堆栈Stack。 详细代码如下。 一、添加类:FileAndFolder.cs 添加如下程序代码: using System; ...

    CSharp遍历文件目录的递归与非递归实现

    遍历文件与文件夹的程序可以用递归实现,也可以用链表List,队列Queue,堆栈Stack。

    详细代码如下。

    一、添加类:FileAndFolder.cs

    添加如下程序代码:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.IO;

     

    namespace SyncAndAsyncDemo

    {

        /// <summary>

        /// 遍历所有文件和目录的递归 以及 非递归实现

        /// </summary>

        public class FileAndFolder

        {

            /// <summary>

            /// 使用递归Recursion实现

            /// </summary>

            /// <param name="directoryPath"></param>

            public static void FindAllFiles_Recursion(string directoryPath)

            {

                string[] folderArray = Directory.GetDirectories(directoryPath);

                string[] fileArray = Directory.GetFiles(directoryPath);

                for (int i = 0; i < folderArray.Length; i++)

                {

                    Console.WriteLine("目录:" + folderArray[i]);

                    //继续遍历子目录

                    FindAllFiles_Recursion(folderArray[i]);

                }

                for (int i = 0; i < fileArray.Length; i++)

                {

                    Console.WriteLine("文件:" + fileArray[i]);

                }

            }

     

            /// <summary>

            /// 使用链表List实现

            /// </summary>

            /// <param name="directoryPath"></param>

            public static void FindAllFiles_List(string directoryPath)

            {

                List<string> list = new List<string>();

                list.Add(directoryPath);

                while (list.Count > 0)

                {

                    //移除list的第一个元素

                    string path = list[0];

                    list.RemoveAt(0);

                    string[] folderArray = Directory.GetDirectories(path);

                    string[] fileArray = Directory.GetFiles(path);

                    for (int i = 0; i < folderArray.Length; i++)

                    {

                        Console.WriteLine("目录:" + folderArray[i]);

                        //将最新的子目录放入集合中

                        list.Add(folderArray[i]);

                    }

                    for (int i = 0; i < fileArray.Length; i++)

                    {

                        Console.WriteLine("文件:" + fileArray[i]);

                    }

                }

            }

     

            /// <summary>

            /// 使用队列Queue实现

            /// </summary>

            /// <param name="directoryPath"></param>

            public static void FindAllFiles_Queue(string directoryPath)

            {

                Queue<string> queue = new Queue<string>();

                queue.Enqueue(directoryPath);

                while (queue.Count > 0)

                {

                    //移除list的第一个元素

                    string path = queue.Dequeue();

                    string[] folderArray = Directory.GetDirectories(path);

                    string[] fileArray = Directory.GetFiles(path);

                    for (int i = 0; i < folderArray.Length; i++)

                    {

                        Console.WriteLine("目录:" + folderArray[i]);

                        //将最新的子目录放入集合中

                        queue.Enqueue(folderArray[i]);

                    }

                    for (int i = 0; i < fileArray.Length; i++)

                    {

                        Console.WriteLine("文件:" + fileArray[i]);

                    }

                }

            }

     

            /// <summary>

            /// 使用堆栈Stack实现

            /// </summary>

            /// <param name="directoryPath"></param>

            public static void FindAllFiles_Stack(string directoryPath)

            {

                Stack<string> stack = new Stack<string>();

                stack.Push(directoryPath);

                while (stack.Count > 0)

                {

                    string path = stack.Pop();

                    string[] folderArray = Directory.GetDirectories(path);

                    string[] fileArray = Directory.GetFiles(path);

                    for (int i = 0; i < folderArray.Length; i++)

                    {

                        Console.WriteLine("目录:" + folderArray[i]);

                        //将最新的子目录放入集合中

                        stack.Push(folderArray[i]);

                    }

                    for (int i = 0; i < fileArray.Length; i++)

                    {

                        Console.WriteLine("文件:" + fileArray[i]);

                    }

                }

            }

     

        }

    }

    二、在默认的Program.csMain函数增加如下测试代码:

            static void Main(string[] args)

            {

                string path = "D:\\data";

                Console.WriteLine("遍历文件使用递归实现:");

                FileAndFolder.FindAllFiles_Recursion(path);

     

                Console.WriteLine("遍历文件使用链表实现:");

                FileAndFolder.FindAllFiles_List(path);

     

                Console.WriteLine("遍历文件使用队列实现:");

                FileAndFolder.FindAllFiles_Queue(path);

     

                Console.WriteLine("遍历文件使用堆栈实现:");

                FileAndFolder.FindAllFiles_Stack(path);

                Console.ReadLine();

            }

    三、程序运行效果:

    注意:队列、堆栈的输出顺序是相反的【先进先出、后进先出】

    展开全文
  • csharp读写properties文件

    2019-11-17 18:16:42
    添加using using System; using System.Collections; using System.Diagnostics; using System.IO; using System.Text; PropertiesConfig class PropertiesConfig { private static Hashtable _ht = ne...

    编码

    添加using

    using System;
    using System.Collections;
    using System.Diagnostics;
    using System.IO;
    using System.Text;

    PropertiesConfig

      class PropertiesConfig {
        private static Hashtable _ht = new Hashtable(16);
        static PropertiesConfig() {
          var ht = new Hashtable();
          string file = @"app.properties";
          if (!File.Exists(file)) { 
            //将变量列入到配置文件中
            _ht=initProperties();
            save(file,_ht);
          } else {
            //加载配置文件,验证配置文件,保存配置文件
            _ht = load(file);
            if (validate()) {
              save(file, _ht);
            }
          }
        }
    
        private static Hashtable initProperties() {
          _ht["project.name"] = "合光机器人知识库";
          _ht["manager.url"] = "http://ibotcluster.online.uairobot.com/manager";
          return _ht;
        }
        
        private static bool validate() {
          var retval = false;
          if (_ht["project.name"] == null) {
            _ht["project.name"] = "合光机器人知识库";
            retval = true;
          }
          if (_ht["manager.url"] == null) {
            _ht["manager.url"] = "http://ibotcluster.online.uairobot.com/manager";
            retval = true;
          }
          return retval;
        }
        public static Hashtable load(string file) {
          string content = null;
          var ht = new Hashtable();
          try {
            content = File.ReadAllText(file, System.Text.Encoding.UTF8);
          } catch (Exception e) {
            return null;
          }
          string[] rows = content.Split('\n');
          string[] kv = null;
          foreach (string c in rows) {
            if (c.Trim().Length == 0)
              continue;
            kv = c.Split('=');
            if (kv.Length == 1) {
              ht[kv[0].Trim()] = "";
            } else if (kv.Length == 2) {
              ht[kv[0].Trim()] = kv[1].Trim();
            }
          }
          return ht;
        }
    
        public static bool save(string file, Hashtable ht) {
          if (ht == null || ht.Count == 0)
            return false;
          StringBuilder sb = new StringBuilder(ht.Count * 12);
          foreach (string k in ht.Keys) {
            sb.Append(k).Append('=').Append(ht[k]).Append(System.Environment.NewLine);
          }
          try {
            File.WriteAllText(file, sb.ToString(), System.Text.Encoding.UTF8);
            return true;
          } catch (Exception e) {
            return false;
          }
        }
    
        public static string getValue(string key) {
          return (string)_ht[key];
        }
      }

    使用工具类

    程序启动后,创建的文件内容如下

    读取properties文件代码讲解

    判断文件是否存在,如果文件不存在,创建文件并向文件中写入空字符串,注意,if语句的下一行代码前有个tab

    string file = @"D:\cfg.txt";
    if (!File.Exists(file))
      File.WriteAllText(file, "");

    读取文件内容到字符串

    string file = @"D:\cfg.txt";
    string content = null;
    try {
      content = File.ReadAllText(file, System.Text.Encoding.UTF8);
    } catch (Exception e) {
      return null;
    }

    将文件按换行进行拆分,再使用foreach遍历没一行,使用=进行拆分,如果没有等号则将行的内容作为key放入hashtable,值是空格

    Hashtable ht = new Hashtable(16);
    string[] rows = content.Split('\n');
    string[] kv = null;
    foreach (string c in rows) {
      if (c.Trim().Length == 0)
        continue;
      kv = c.Split('=');
      if (kv.Length == 1) {
        ht[kv[0].Trim()] = "";
      } else if (kv.Length == 2) {
        ht[kv[0].Trim()] = kv[1].Trim();
      }
    }

    向hashmap中添加key和value

    Hashtable ht = new Hashtable(16);
    ht["Time" + ht.Count] = System.DateTime.Now.ToString();

    将hashtab中的配置项转为properties的格式并且写入文件

    StringBuilder sb = new StringBuilder(ht.Count * 12);
    foreach (string k in ht.Keys) {
      sb.Append(k).Append('=').Append(ht[k]).Append(System.Environment.NewLine);
    }
    try {
      File.WriteAllText(file, sb.ToString(), System.Text.Encoding.UTF8);
      return true;
    } catch (Exception e) {
      return false;
    }

    文件名中不能包含路径

    class PropertiesConfig {
      static PropertiesConfig() {
        string file = @"config\app.properties";
        if (!File.Exists(file))
          File.WriteAllText(file, "");
      }
    }

    问题:WriteAllText会自动创建文件夹吗?

    在vs2013安f5调试程序,程序异常退出,并且没有任何日志

    修改为string file = @"app.properties";则正常,并且app.properties和主程序在同一个文件夹中

    展开全文
  • csharp文本文件读写

    万次阅读 2007-05-14 16:29:00
    上面只是把传递过来的几个参数直接写入了HTML文件中,在实际应用中需要先添加数据库,然后再写入HTML文件 而且需要把生成的文件名等写入数库以便以后调用等,此实例只是实现了根据提交过来参数替换模板中的相应的字段...

     

    ASP.Net/asp 生成静态HTML页!
    日期:2006-1-22 3:14:35 人气: <script language="JavaScript" src="../ViewCmsHits.asp?ID=24" type="text/javascript"></script>3611     [大 中 小]
     
     

    环境:Microsoft .NET Framework SDK v1.1

    OS:Windows Server 2003 中文版

    ASP.Net生成静态HTML页

    在Asp中实现的生成静态页用到的FileSystemObject对象!

    在.Net中涉及此类操作的是System.IO



    以下是程序代码 注:此代码非原创!参考别人代码

    //生成HTML页

      public static bool WriteFile(string strText,string strContent,string strAuthor)

      {

       string path = HttpContext.Current.Server.MapPath("/news/");

       Encoding code = Encoding.GetEncoding("gb2312");

       // 读取模板文件

       string temp = HttpContext.Current.Server.MapPath("/news/text.html");

       StreamReader sr=null;

       StreamWriter sw=null;

       string str="";  

       try

       {

        sr = new StreamReader(temp, code);

        str = sr.ReadToEnd(); // 读取文件

       }

       catch(Exception exp)

       {

        HttpContext.Current.Response.Write(exp.Message);

        HttpContext.Current.Response.End();

        sr.Close();

       }

      

       

       string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";

       // 替换内容

       // 这时,模板文件已经读入到名称为str的变量中了

       str =str.Replace("ShowArticle",strText); //模板页中的ShowArticle

       str = str.Replace("biaoti",strText);

       str = str.Replace("content",strContent);

       str = str.Replace("author",strAuthor);

       // 写文件

       try

       {

        sw = new StreamWriter(path + htmlfilename , false, code);

        sw.Write(str);

        sw.Flush();

       }

       catch(Exception ex)

       {

        HttpContext.Current.Response.Write(ex.Message);

        HttpContext.Current.Response.End();

       }

       finally

       {

        sw.Close();

       }

       return true;



    此函数放在Conn.CS基类中了

    在添加新闻的代码中引用 注:工程名为Hover

     

        if(Hover.Conn.WriteFilethis.Title.Text.ToString),this.Content.Text.ToString),this.Author.Text.ToString)))

        {

         Response.Write("添加成功");

        }

        else

        {

         Response.Write("生成HTML出错!");

        }

    -------------------------------------------------------------------------

    模板页Text.html代码

    -------------------------------------------------------------------------

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

    <HTML>

     <HEAD>

      <title>ShowArticle</title>

      

     <body>

     

    ------------------------------------------------------------------------

    提示添加成功后会出以当前时间为文件名的html文件!上面只是把传递过来的几个参数直接写入了HTML文件中,在实际应用中需要先添加数据库,然后再写入HTML文件

    而且需要把生成的文件名等写入数库以便以后调用等,此实例只是实现了根据提交过来参数替换模板中的相应的字段! 需要完善的地方很多!哪位有高见,欢迎赐教!


     

     

     

     biaoti

     <br>

     content<br>

     author

     </body>

    </HTML>



    System.IO命名空间中的类为托管应用程序提供文件以及其他形式的输入输出。托管i/o的基本构件是流,而流是字节导向的数据的抽象表示。流通过System.IO.Stream类表示.

    System.IO.FileStream允许将文件作为流访问;

    System.IO.MemoryStream允许将内存块作为流进行访问;…………

    托管和非托管的应用程序最常使用的IO形式是文件IO。托管应用程序读写文件的一般步骤如下

    、用FileStream对象打开文件

    、进行二进制读写操作,在FileStream对象周围包装BinaryReader和BinaryWriter的实例,并调用BinaryReader和BinaryWriter方法执行输入输出。

    、要读写文本,在FileStream对象的周围包装一个StreamReader和StreamWriter,然后使用StreamReader和StreamWriter方法完成输入输出。

    、关闭FileStream对象。

    下面是一个简单的文本文件读操作

    using System;
    using System.IO;

    class FileTest
    {
    static void Main(string [] args)
    {
    string filename="testfile.txt";
    //打开文件并显示其内容
    StreamReader reader=null;
    try
    {
    reader=new StreamReader(filename);
    for(string line=reader.ReadLine();line!=null;line=reader.ReadLine())
    Console.WriteLine(line);
    }
    catch(IOException e)
    {
    Console.WriteLine(e.Message);
    }
    finally
    {
    if(reader!=null)
    reader.Close();
    }
    }
    }
    /**
    * FCL是一个非常丰富的类库,所以还有许多打开文件并进行读取的方法,比如
    * .用File.open创建一个FileStream,并围绕它包装一个StreamReader
    * FileStream stream=File.Open(filename,FileMode.Open,FileAccess.Read);
    * StreamReader reader=new StreamReaderaa(stream);
    * .使用File.OpenText,在一步内创建一个FileStream和一个StreamReader
    * StreamReader reader=File.OpenText(filename);
    * 当然,还有其他的方法
    * 若要对文本进行写入操作,可以使用StreamWriter
    */

    其中的异常处理是为了防止意外的事情发生,如传递给StreamReader的构造函数的文件名非法,或者在执行raeder.Close();前匡架引发异常等。

    微软的.Net框架为我们提供了基于流的I/O操作方式,这样就大大简化了开发者的工作。因为我们可以对一系列的通用对象进行操作,而不必关心该I/O操作是和本机的文件有关还是和网络中的数据有关。.Net框架主要为我们提供了一个System.IO命名空间,该命名空间基本包含了所有和I/O操作相关的类。

    本文将向大家介绍一些基本的文件操作方法,包括对文件系统中的目录和文件的操作,还有就是文件的读写操作等。通过运用System.IO.DirectoryInfo类和System.IO.FileInfo类我们可以轻易的完成与目录和文件相关的操作,而通过运用System.IO.StreamReader类和System.IO.StreamWriter类我们可以方便的完成与文件的读写相关的操作。

     

    命名空间概览

    下面的表格显示了System.IO命名空间中最重要的一些类,通过运用这些类我们就能完成基本的文件操作。

     

    表1

     

    类名功能和用途
    BinaryReader、BinaryWriter读写二进制数据
    Directory、File、DirectoryInfo以及FileInfo创建、删除并移动目录和文件,通过属性获取特定目录和文件的相关信息
    FileStream以随机方式访问文件
    MemoryStream访问存储在内存中的数据
    StreamReader 、StreamWriter读写文本数据信息
    StringReader、StringWriter运用字符串缓冲读写文本数据信息

     

    运用DirectoryInfo类和FileInfo类

    DirectoryInfo类和FileInfo类的基类都是FileSystemInfo类,这个类是一个抽象类,也就是说你不可以实例化该类,只能通过继承产生其子类并实例化其子类。然而你却可以运用由该类定义的各种属性,下面的表格显示了该类已经定义了的各种属性。

     

    表2

     

    属性功能和用途
    Attributes返回和文件相关的属性值,运用了FileAttributes枚举类型值
    CreationTime返回文件的创建时间
    Exists检查文件是否存在于给定的目录中
    Extension返回文件的扩展名
    LastAccessTime返回文件的上次访问时间
    FullName返回文件的绝对路径
    LastWriteTime返回文件的上次写操作时间
    Name返回给定文件的文件名
    Delete()删除一个文件的方法,请务必谨慎地运用该方法

    DirectoryInfo类提供了创建、删除和移动目录等方法,要运用表2中的各种属性,我们首先得创建一个DirectoryInfo类的对象,然后就可以访问其各种属性了。

         DirectoryInfo dir1 = new DirectoryInfo(@"F:/Test");
    Console.WriteLine("Full Name is : {0}", dir1.FullName);
    Console.WriteLine("Attributes are : {0}", dir1.Attributes.ToString());

    同时,我们还可以运用FileAttributes枚举类型值来获取和文件相关的各种属性,下面的表格就显示了该枚举类型中的各种值。

     

    表3

     

    功能和用途
    Archive返回文件的存档状态
    Compressed返回文件是否被压缩
    Directory返回文件是否是一个目录
    Encrypted返回文件是否被加密
    Hidden返回文件是否是隐藏的
    Offline表明文件数据是不可得的
    ReadOnly表明文件是只读的
    System表明文件是一个系统文件

     

    目录下的文件操作

    运用DirectoryInfo类的对象我们可以轻松的实现对目录以及和目录中的文件相关的操作,假如你要获得某个目录F:/Pictures下的所有BMP文件,那么通过下面的代码就可以实现该功能。

         DirectoryInfo dir = new DirectoryInfo(@"F:/ Pictures");
    FileInfo[] bmpfiles = dir.GetFiles("*.bmp);
    Console.WriteLine("Total number of bmp files", bmpfiles.Length);
    Foreach( FileInfo f in bmpfiles)
    {
      Console.WriteLine("Name is : {0}", f.Name);
      Console.WriteLine("Length of the file is : {0}", f.Length);
      Console.WriteLine("Creation time is : {0}", f.CreationTime);
      Console.WriteLine("Attributes of the file are : {0}",
                        f.Attributes.ToString());
    }

    上面的代码中我们首先创建了一个DirectoryInfo对象,然后通过调用该对象的GetFiles方法获取目录F:/Pictures下的所有以bmp为扩展名的文件,该方法返回的值是一个FileInfo类型的数组,每个元素则代表一个文件。最后,程序还列举了每个BMP文件的相关属性。

     

    创建子目录

    运用DirectoryInfo类创建子目录是非常容易的,你只要调用其中CreateSubdirectory()方法即可,演示代码如下。

         DirectoryInfo dir = new DirectoryInfo(@"F:/ Pictures");
    try
    {
      dir.CreateSubdirectory("Sub");
      dir.CreateSubdirectory(@"Sub/MySub");
    }
    catch(IOException e) 
    {
      Console.WriteLine(e.Message);
    }

     

    运用FileInfo类创建、删除文件

    通过FileInfo类,我们可以方便地创建出文件,并可以访问文件的属性同时还可以对文件进行打开文件、关闭文件、读写文件等基本的操作。下面的代码显示了如何创建一个文本文件并且去访问其创建时间、文件的绝对路径以及文件属性等文件信息,最后程序还给出了删除文件的方法。

         FileInfo fi = new FileInfo(@"F:/Myprogram.txt");
    FileStream fs = fi.Create();
    Console.WriteLine("Creation Time: {0}",fi.CreationTime);
    Console.WriteLine("Full Name: {0}",fi.FullName);
    Console.WriteLine("FileAttributes: {0}",fi.Attributes.ToString());
    Console.WriteLine("Press any key to delete the file");
    Console.Read();
    fstr.Close();
    fi.Delete();

     

    理解FileInfo类的Open()方法

    我们在对文件进行读写操作之前必须打开文件,FileInfo类为我们提供了一个Open()方法,该方法包含了两个枚举类型值的参数,一个为FileMode枚举类型值,另一个为FileAccess枚举类型值。通过设定这两个参数值,我们可以对文件的访问模式和操作权限进行控制。下面的两个表格分别显示了FileMode枚举类型的值和FileAccess枚举类型的值。

     

    表4

     

    功能和用途
    Append打开文件并添加数据,运用该方法时FileAccess枚举类型值应为Write。
    Create创建一个新文件,有可能会覆盖已经存在的文件。
    CreateNew创建一个新文件,如果该文件已经存在,则抛出IOException异常。
    Open打开一个已经存在的文件。
    OpenOrCreate打开文件,如果该文件不存在,则创建之。
    Truncate截短一个已经存在的文件。

     

    表5

     

    功能和用途
    Read可以从一个文件中读取数据。
    ReadWrite可以从一个文件中读取数据,同时还可以向文件中写入数据。
    Write可以向文件中写入数据。

    下面的代码显示了Open()方法的具体运用方法。

         FileInfo f = new FileInfo("F:/MyFile.txt");
    FileStream s = f.Open(FileMode.OpenorWrite, FileAccess.Read);

     

    运用StreamReader类和StreamWriter类实现文件的读写操作

    对文件的读写操作应该是最重要的文件操作,System.IO命名空间为我们提供了诸多文件读写操作类,在这里我要向大家介绍最常用也是最基本的StreamReader类和StreamWriter类。从这两个类的名称我们不难发现它们都是基于流的读写操作类。

    我们可以通过File类的OpenText()方法来获取一个StreamReader对象,通过该对象我们可以实现对文本文件的读操作,方法如下:

         Console.WriteLine("Reading the contents from the file");
    StreamReader s = File.OpenText("MyText.txt");
    string read = null;
    while ((read = s.ReadLine()) != null)
    {
      Console.WriteLine(read);
    }
    s.Close();

    而通过调用FileInfo类的CreateText()方法我们可以获取一个StreamWriter对象,调用StreamWriter类的WriteLine()我们就可以向文本文件中写入数据了,方法如下:

         FileInfo f = new FileInfo("MyText.txt")
    StreamWriter w = f.CreateText();
    w.WriteLine("This is from");
    w.WriteLine("Chapter 1");
    w.WriteLine("Of C# Module");
    w.Write(w.NewLine);
    w.WriteLine("Thanks for your time");
    w.Close();

     

    总结

    以上我简要地向大家介绍了C#文件操作的基本知识和方法,通过本文大家不难发现.Net框架下I/O操作的方便性。读者在学习了本文后,如果要进行一些基本的文件操作,那么对于System.IO命名空间中的诸如DirectoryInfo类、FileInfo类、FileStream类、StreamReader类以及StreamWriter类等类一定得有基本了解并在实际应用中灵活使用之。如果要对文件操作有更进一步的控制,那么不妨去研究一下System.IO命名空间中的更为具体和细节的一些类。最后,希望本文对大家能有所帮助。


     
    展开全文
  • Csharp读写XML文件

    2015-06-17 16:47:19
    自己编写的读写xml文件,对xml文件的增加、删除、修改、查找
  • Csharp文件操作全收录

    2012-03-11 12:58:53
    目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内容Detele、读取文本...
  • CSharp文件读取与写入入门图解
  • csharp 读写xml文件

    千次阅读 2010-02-28 18:01:00
    已知有一个XML文件(bookstore.xml)如下: Oberons Legacy Corets, Eva 5.95 1、往节点中插入一个节点: XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load("bookstore.xml"); XmlNode root=xmlDoc....
  • FileInfo类与File类有些类似,它们都可以对磁盘上的文件进行操作。不同的是FileInfo类是实例类,所有的方法都只能在实例化对象后才能调用。创建 FileInfo 类对象时必须传递一个文件路径作为参数
  • 读取配置文件转换成字符串,代码如下 string contents = System.IO.File.ReadAllText("config.json"); 注意:该语句会抛出文件不存在异常。 使用Newtonsoft.Json将json字符串转换成类的对象,完整代码如下所示 ...
  • VS2010 Csharp调用非托管Cpp生成的DLL文件 欢迎使用Markdown编辑器 创建一个CSharpInvokeCPP的解决方案 创建一个C++的动态库项目;在应用程序设置中,选择“DLL”,其他按照默认选项; 注释:其中dllmain.cpp作为...
  • CSharp(C#)读取excel文件,详解

    千次阅读 2021-01-20 16:05:36
    CSharp(C#)读取excel文件,详解 一个电脑小白的自我成长之路(&_&)。 1.先打开Excel表格,制作一个表。表名为information。如下图: 2.打开VS,创建C#控制台应用程序。名称ReadExcelTest,位置G:\Test 3....
  • Cpp项目引用外部动态链接库通常需要*.lib文件,如果想直接引用dll文件,则需要进行以下操作: 1:项目属性->常规 将1公共语言运行支持选为 公共语言运行时支持(/clr) 2: 属性中 选择.net目标框架版本 选项...
  • 动态生成C#代码cs文件_CSharp

    千次阅读 2019-06-27 10:57:35
    动态生成脚本文件(不能添加到程序集),根据数据群代码生成完整的C#脚本文件,例如根据数据库等自动生成接口、类、结构、或者枚举等, 需要用到的引用: using System.CodeDom; using System.CodeDom.Compiler; ...
  • 解析器从程序接收上载的文件流以及一些添加的参数,并返回包含完整文件数据的类对象。 该库提供以下功能: 解析整个文件,并返回一个封装了完整文件数据的类。 开发人员可以选择是否将上载的文件保存在系统/...
  • 只有当 Assembly-CSharp.dll 中拥有其他 dll 文件的引用时,这里面的脚本代码才能引用其他 dll 里面的命名空间。此时发现右键并没有手动添加引用这个选项。 选中所要添加引用的解决方案后,再点击工具栏:项目 ...
  • 通常,在我们开发时时,如何需要将文件保存到数据库中,我们会将该字段设置成IMAGE格式,即以二进制的形式保存。 这就存在一个问题,以二进制形式保存后的数据库,在导出或者备份数据时,无法将该字段导出成SQL语句...
  • 系统:Windows 7 开发环境:Microsoft Visual Studio 2008 ...看看她的图标 以及生成成的exe文件 呵呵 在开发中我们可不想要这样的图标       2. 准备个.ico图标文件 比如 这个图标
  • 这几天打算写一个小程序,经常需要用到读取预先设置好的配置项,而每次使用的时候都需要写下许多的代码...所以我想,不如将对ini文件的操作封装成一个类,需要使用的时候直接根据路径实例化一个类,然后对其进行操作。
  • //不存在添加 } str = sr.ReadLine(); } sr.Close(); } } /// /// 写入 /// 涂聚文 /// 缔友计算机信息技术有限公司 /// /// <param name="sender"></param> /// <param name="e"></param> private ...
  • 将您的Release发布后生成的文件拷贝到你的U盘上 二、发布系统服务代码,发布路径下cmd 执行InstallUtil.exe AgvMonitorWinService.exe 然后完成同样拷贝到你的U盘上 1.网站部署问题 先保证环境都已经安装...
  • 该存储库包含从 protobuf文件生成的代码。 如何使用此存储库? 该存储库将为每个新版本的代码生成一个NuGet包。 如果要在C#项目中使用MruV API包,则应从添加MruV.Protos包。 范例程式码 本示例将连接到地址...
  • CSharp语法基础

    2021-08-13 19:29:12
    CSharp语法基础CSharp语法基础CSharp语法基础 常用工具类 1.开发环境 开发环境 第一个程序 认识CS项目 2.类型和变量 类型和变量 控制台输出 3.类和对象 添加类 字段和方法 构造方法 类的拆分 partial 4.属性 ...
  • Csharp中用XmlWriter写XML文件

    千次阅读 2010-03-29 16:10:00
    注意:如果不想将文件写入XML文件指向将XML内容显示在控制台,在构造函数中将“Console.Out”作为参数传递。 XmlTextWriter writer = new XmlTextWriter(Console.Out); 【添加数据到文档】 WriteStartDocument...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,502
精华内容 5,000
关键字:

csharp添加文件