文章标题

转载 2015年11月19日 12:00:52

using System;
using System.IO;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
/**
*关于文件读写
*File STREAM
*
*/

        string path = @"D:\mytest.txt";

        //创建文件写入文本
        if (!File.Exists(path))
        {
            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine("HELLO");
                sw.WriteLine(" WELCOME");

            }
        }

        //打开文件读取内容
        using (StreamReader SR = File.OpenText(path))
        {
            string s = "";
            while ((s=SR.ReadLine() )!= null)
            {
                Console.WriteLine(s);
                //Console.ReadLine();
            }
        }

        try
        {
            string path2 = path + "temp";
            File.Delete(path2);
            File.Copy(path, path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);
            File.Delete(path2);
            Console.WriteLine("{0}was successfully deleted.", path2);
            Console.ReadLine();
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed:{0}", e.ToString());
        }

    }
}

}

.net操作文件的基本方法总结

先看示例代码片段:
1.读取文件:
FileStream的用法
System.IO.FileStream fs = new FileStream(“Test.txt”, FileMode.OpenOrCreate,FileAccess.Read);
char[] cs = new char[fs.Length];
byte[] bs = new byte[fs.Length];
fs.Read(bs,0,(int)fs.Length);
Encoding e = System.Text.Encoding.UTF8;
cs=e.GetChars(bs);

        foreach (char c in cs)
        {
            Console.WriteLine(c);
        }

StreamReader的用法:
string str;
using (StreamReader sr = new StreamReader(“Test.txt”))
{
while ((str = sr.ReadLine()) != null)
{
Console.WriteLine(str);
}
}
2.写入文件:
FileStream的用法:
System.IO.FileStream fs = new FileStream(“Test.txt”, FileMode.Truncate);
string str = “Hello,this is my cc”;
byte[] array = new byte[str.Length];
System.Text.Encoding e = System.Text.UTF8Encoding.UTF8;
array=e.GetBytes(str);
fs.Write(array, 0, array.Length);
StreamWrite的用法:
using (StreamWriter sw = new StreamWriter(“Test.txt”,true,Encoding.GetEncoding(“gb2312”)))
{
sw.WriteLine(“你好不好,我想你”);
}
下面总结总结:
从上面的实例代码可以看出StreamReader和StreamWrite操作的的字符串,而FileStream操作的是字节数组。而字节数据又要通过Encoding类把字节数组和字符数组进行转换。这是他们之间的本质区别.
另外补充关于System.IO命名空间下类的用法:
在System.IO名称空间中包含了用于文件输入输出的主要类。
File:实用类,提供许多静态方法,用于移动、复制和删除文件。
Directory:实用类,提供许多静态方法,用于移动、复制和删除目录。
Path:实用类,用于处理路径名称。
FileInfo:表示磁盘上的物理文件,具有可以处理此文件的方法。要完成对文件的读取和写入工作,就必须创建Stream对象。
DirectoryInfo:表示磁盘上的物理目录,具有可以处理此目录的方法。
FileStream:表示可以被写或被读,或二者均可的文件。此文件可以同步或异步的读和写。
StreamReader:从流中读取字符数据,并可以通过使用FileStream被创建为基类。
StreamWriter:向流写字符数据,可以通过使用FileStream被创建为基类。
FileSystemWatcher:用于监控文件和目录,并在这些位置发生变化时,给出应用程序可以捕获的事件。

File类一些常用的静态方法:

方法
说明

Copy()
将文件复制到规定的位置

Create()
在规定的路径上创建文件

Delete()
删除文件

Open()
在规定的路径上返回FileStream对象

Move()
将规定的文件移动到新位置。可以在新位置为文件规定不同的名称

Directory类一些常用的静态方法:

方法
说明

CreateDirectory()
创建具有规定路径的目录

Delete()
删除规定的目录以及其中的所有文件

GetDirectories()
返回表示当前目录之下的目录的Directory对象的数组

GetFiles()
返回在当前目录中的File对象的数组

Move()
将规定的目录移动到新位置。可以在新位置为文件夹规定一个新名称

FileInfo类:

它没有静态方法,仅可用于实例化的对象。FileInfo对象表示在磁盘或网络位置的文件。注意它不是流。为了实现对文件的读取或写入,必须创建Stream对象。

如果仅在对象上进行单一方法调用,则可以使用静态File类。在此,静态调用要快一些,因为.Net Framework不必遍历实例化新对象并调用方法的过程。但是如果应用程序在文件上执行几种操作,在实例化FileInfo对象并使用其方法就更好一些。这会节省时间,因为对象将在文件系统上引用正确的文件,而静态类就必须每次都寻找文件。

FileInfo类提供的基础性的属性,可用来更新文件。

属性
说明

Attributes
获取或者设置当前文件的属性

CreationTime
获取当前文件的创建日期和时间

DirectoryName
返回文件目录的路径

Exists
判断是否存在文件

FullName
检索文件的完整路径

Length
获取文件的容量

Name
仅仅返回文件的名称,而不是完整的文件位置路径

DirectoryInfo类:

DirectoryInfo类的作用类似于FileInfo类。它是一个实例化的对象,表示计算机上的单一目录。同FileInfo类—样,在Directory和DirectoryInfo之间可以复制许多方法调用。当使用这二者时,可以便用相同的原则:如果进行单一调用,就使用静态Directory类。如果进行一系列调用,则使用实例化的DirectoryInfo对象。

DirectoryInfo类与FileInfo类共享几乎所有相同的属性,DirectoryInfo类作用在无文件的目录上除外。

FileStream对象:

表示在磁盘或网络路径上指向文件的流。当类提供向文件读取和写入字节的方法时,经常使用StreamReader和StreamWriter执行这些功能。这是因为FileStream类操作字节和字节数组,而Stream类操作字符数据。

还有几种方法可以创建FileStream对象。构造函数具有许多不同的重载/版本,但是最简单的构造函数仅仅带有两个参数,即文件名和FileMode枚举。

FileStream aFile = new FileStream(“a.txt”,FileMode.OpenOrCreate);

FileMode枚举的成员:

FileMode枚举成员
说明

Append
如果文件存在,就打开文件,将文件位置移动到文件的末尾,并创建个新文件。FileMode.Append仅可以与枚举FileAccess.Write联合使用

Create
创建新文件,如果存在这样的文件就破坏它

CreateNew
创建新文件,但是如果已经存在了此文件,则抛出异常

Open
打开现有的文件。如果不存在所规定的文件,则抛出异常

OpenOrCreate
如果文件存在,则规定打开文件,否则就创建新文件。如果文件已经存在,则保留在文件中的数据

Truncate
打开现有文件,清除其内容。然后我们可以向文件写入全新的数据,但是保留文件的初始创建日期。必须存在有文件,否则就会抛出异常

前面的构造函数默认以只读模式打开文件。需要一个附加参数规定不同的访问级别,此参数即FileAccess参数。

FileStream aFile = new FileStream(“a.txt”,FileMode.OpenOrCreate,FileAccess.Write);

此行代码将打开文件,对文件进行写访问。对文件的任何读的企图都会导致抛出异常。仅有3种类型的FileAccess枚举:Read,ReadWirte和Write。可以打开一个文件,只读、只写或进行读写操作。此属性的作用是:基于用户的身份验证级别改变用户对文件的访问。

文章标题自动标注程序

  • 2015年06月25日 17:04
  • 6.93MB
  • 下载

在文章中主标题和副标题的格式问题

请问:如果 大标题居中书写。正常情况下,副标题要在大标题第三个字下开始写破折号,是吗?那如果格数不够,副标题写不开了怎么办?可以把副标题居中写吗? 还是把 大标题和副标题整体前移?不是论文,手写的,公...

文章标题上下轮番滚动.zip

  • 2012年09月04日 12:31
  • 28KB
  • 下载

文章标题CCF201509-4高速公路

问题描述   某国有n个城市,为了使得城市间的交通更便利,该国国王打算在城市之间修一些高速公路,由于经费限制,国王打算第一阶段先在部分城市之间修一些单向的高速公路。   现在,大臣们帮国王拟了一个...

文章标题 UVALive 7045:Last Defence(辗转相除思想)

Last DefenceGiven two integers A and B. Sequence S is defined as follow: • S0 = A • S1 = B • Si = |Si...

文章标题:Android常见控件ImageView的使用方法

ImageView是用于在界面上展示图片的一个控件,通过它可以上我们的程序界面变得更加丰富多彩。我们需要在drawable中放一张格式为Png的图片。那我们在界面上展示这张图片吧。我们在activit...
  • wen0801
  • wen0801
  • 2017年04月06日 00:16
  • 104

文章标题 spark读取文件过程中发现的问题解决记录

spark读取本地文件的方式是给路径加上file://,例如sc.textFile(“/opt/software/spark1.4/README.md”),我发现一个问题就是,我的spark软件安装在...

一篇好的原创文章首先从标题开始做起

标题是内容的眼睛,一个好的标题应该不仅可以使用户了解到页面的主要内容,还应该引起用户阅读内容的星期。在撰写文章标题时除要重视和布局分词、以命中更多的长尾搜索词外,还应该能够吸引用户点击。    ...

文章标题spring-boot + spring-data-jpa 实现简单的增删改查

JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。 示例环境 jdk 1.8 spring-boot 2....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文章标题
举报原因:
原因补充:

(最多只允许输入30个字)