C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)
文件流
FileStream 可读可写 大文件 释放
StreamReader 读取 释放
StreamWriter 写入 释放
using 中释放
File 可读可写 小文件 操作文件,静态类,对文件整体操作。拷贝、删除、剪切等。
Path类 针对字符串进行操作
文件操作
重点讲解FileStream、StreamReader、StreamWriter、File、Directory、Path这几个类。
FileStream,通过大文件拷贝的案例。
string str = "今天明天后天";
//字符串转字节数组
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(str);
//字节数组转字符串
string newStr = System.Text.Encoding.UTF8.GetString(bytes);
===============================================
//文件流的写
//创建文件流
FileStream fs = new FileStream("fist.txt", FileMode.Create, FileAccess.Write);
//写入内容
string msg = “锄禾日当午,地雷埋下土,老马走过去,炸成二百五";
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(msg);
fs.Write(bytes,0,bytes.Length);
//清空缓冲区,关闭文件流,释放资源
fs.Flush();
fs.Close();
fs.Dispose();
Console.WriteLine("哦买雷电嘎嘎闹,小杨太帅了!!!");
===========================================================
using (FileStream fs=new FileStream("fist.txt", FileMode.Open, FileAccess.Read))
{
byte[]bytes=new byte[fs.Length];
fs.Read(bytes,0,bytes.Length);
string msg = System.Text.Encoding.UTF8.GetString(bytes);
Console.WriteLine(msg);
}
=========================================================复制文件
using (FileStream fsRead=new FileStream(@"E:\搜狗下载\net\MVC\第一天.zip", FileMode.Open,FileAccess.Read))
{
//写的流
using (FileStream fsWrite=new FileStream(@"E:\搜狗下载\1.zip", FileMode.Create,FileAccess.Write))
{
//每次读取的大小是5M
byte[] buffer=new byte[1024*1024*5];
//实际(真正读取到的大小)
int r = fsRead.Read(buffer,0, buffer.Length);
while (r>0)
{
//写入
fsWrite.Write(buffer, 0, r);
Console.WriteLine("0.0");
//再读取
r = fsRead.Read(buffer,0,r);
}
}
}
===========================================================
using (StreamReader sr=new StreamReader("",Encoding.Default))
{
while (sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
string line = null;
while ((line=sr.ReadLine())!=null)
{
Console.WriteLine(line);
}
}
========================================================
using (StreamWriter sw=new StreamWriter("",true,Encoding.UTF8))
{
for (int i = 0; i < 100; i++)
{
sw.WriteLine(i);
}
}
===============================================工资翻倍案例
马大哈|6000
宋江|17400
马大姐|8000
宋子文|16400 //文本文件
using (StreamReader reader=new StreamReader("gz.txt",Encoding.Default))
{
using (StreamWriter writer=new StreamWriter("gz1.txt",false,Encoding.Default))
{
string line;
while ((line = reader.ReadLine())!=null)
{
//把每一行的|切掉
string[] salary = line.Split(new char[] {'|'}, StringSplitOptions.RemoveEmptyEntries);
string txt = string.Format("{0}|{1}", salary[0], Convert.ToInt32(salary[1])*2);
writer.WriteLine(txt);
}
}
}
Console.ReadKey();
File、Directory、Path
Path//对文件或目录的路径进行操作(很方便)【字符串】
string ChangeExtension(string path, string extension) (*)
修改文件的后缀,“修改”支持字符串层面的,没有真的给文件改名
string s = Path.ChangeExtension(@"C:\temp\F3.png", "jpg")
string Combine(string path1, string path2)
将两个路径合成一个路径,比用+好,可以方便解决不加斜线的问题,自动处理路径分隔符的问题
string s = Path.Combine(@"c:\temp","a.jpg")
string GetDirectoryName(string path) (*)
得到文件的路径名。Path.GetDirectoryName(@"c:\temp\a.jpg")
string GetExtension(string path) 得到文件的扩展名
string GetFileName(string path) 得到文件路径的文件名部分
string GetFileNameWithoutExtension(string path) 得到去除扩展名的文件名
string GetFullPath(string path) 得到文件的全路径。可以根据相对路径获得绝对路径。
string GetTempFileName() 得到一个唯一的临时文件名(*)
string GetTempPath() 得到临时文件夹的路径(*)
Directory //操作目录(文件夹),静态类。
void Delete(string path, bool recursive) 删除目录, recursive表示是否递归删除,如果recursive为false则只能删除空目录
bool Exists(string path) 判断目录是否存在
string[] GetDirectories(string path) 得到一个目录下的子目录
string[] GetDirectories(string path, string searchPattern, SearchOption searchOption) 通配符查找目录下的子目录,可以搜索到隐藏文件。
static string[] GetFiles(string path) 得到一个目录下的文件
string[] GetFiles(string path, string searchPattern, SearchOption searchOption) 通配符查找目录下的文件
DirectoryInfo GetParent(string path) 得到目录的父目录
move() //移动、剪切。只能在同一个磁盘中。目录没有Copy方法。可以使用Move()方法实现重命名。
create()
C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)的更多相关文章
- SQL Server 文件流文件组
背景: 文件流通过在文件系统上存储blob数据文件将数据库引擎与ntfs文件集成在一起,使用t-sql和win32访问数据. 文件流使用windows系统来缓存数据,有助于在减少文件流数据对sql s ...
- 文件I/O操作——File类
在java.io包之中,File类是唯一一个与文件本身有关的操作类.它定义了一些与平台无关的方法来操作文件,通过调用File类提供的各种方法,能够完成创建.删除文件,重命名文件,判断文件的读写权限及文 ...
- 文件及文件夹操作- File类、Directory 类、FileInfo 类、DirectoryInfo 类
文件及文件夹操作: C/S:WinForm可以操作客户端文件 Client ServerB/S:Brower Server 命名空间:using system .IO; 1. File类: 创建:Fi ...
- C# 文件流相关操作
二进制转换成图片: MemoryStream ms = new MemoryStream(bytes); ms.Position = ; Image img = Image.FromStream(ms ...
- python 基础篇 04(列表 元组 常规操作)
本节主要内容:1. 列表2. 列表的增删改查3. 列表的嵌套4. 元组和元组嵌套5. range 一. 列表1.1 列表的介绍列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. ...
- Java基础教程:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
- 【基础巩固】文件流读写、大文件移动 FileStream StreamWriter File Path Directory/ ,m资料管理器(递归)
C#获取文件名 扩展名 string fullPath = @"d:\test\default.avi"; string filename = Path.GetFileName(f ...
- C#IO流文件操作
文件流 创建文件流 读写文件的第一步就是创建文件流,流是一个用于数据传输的个对象,它是FileStream类型,在创建一个文件流是需要在他的构造中指定参数 语法: FileStream 文件流对象=n ...
- LInux文件基础知识和文件目录操作(二)文件I/O操作
1.文件I/O操作分为两部分来讲解: 第一部分是非缓冲文件操作,这种操作适合于比较小规模文件的读写和对实时性要求很高的设备的数据通信,这类操作是系统调用提供的: 第二部分是缓冲文件操作,所面向的则是大 ...
随机推荐
- javascript笔记——正则表达式学习笔记
indexof 查找 substring 获取字符串 [) charAt 获取某个字符 split 分割字符串,获得数组 \s:空格 \S:非空格 \d:数字 \D:非数字 \w:字符 \W:非字符 ...
- jQuery实现图片轮播
之前有碰到过jQuery实现列表自动滚动,这次的图片轮播在原理上与之相同,只有一些细微的差别,就是需要在图片的右下角显示当前图片的序号,效果如下: 先看一看html代码,以及对应的css代码: < ...
- mouseover,mouseout,mouseenter,mouseleave的区别
相信做前端开发的都听说过“冒泡型事件”吧,<JavaScript高级程序设计>第九章有详细的讲述,但是,在学习的时候一知半解,也没详细去理解,导致最近在工作中碰到了问题:有许多 li 标签 ...
- C++多线程技术windows常用方法
随着计算机CPU计算能力快速提高,计算机的处理性能和并行性能力也大大提升.那么,一味使用运行时标准库的C++语言也应该开始支持多线程技术.今天,我为大家带来了C++在windows平台下的常用多线程方 ...
- SVN之文件同步更新
在SVN的实际使用上,我有这样的一个需求,同一份保存在SVN库的文件,要求取出在不同的地方,并且仍然要保持同步.根据这样的需求,可以具体分为以下两种情况,下面以库文件A,副本文件A1和副本文件A2,来 ...
- 专家解说IT行业存在哪些安全风险
本人为原创作品:e良师益友 ,转载是并且注明 网络带动了IT行业的发展,同时也带来了安全风险,国外的专家分析2014年IT行业存在的11个安全隐患,随着越来越多技术的不断开发,为方便人们记忆账号,产生 ...
- grails环境搭建
关于grails,前方有大坑,入坑需谨慎. 使用grails,最好有人指点,因为有很多坑等着你去跳.如果完全是自己折腾,每前进一步都会花一些时间,且不说这些时间用来干其他事情有更多回报,光是像堵车一样 ...
- APACHE支持.htaccess以及 No input file specified解决方案
在你的Apache安装文件夹conf里找到httpd.conf文件 搜索LoadModule rewrite_module modules/mod_rewrite.so 如果前面有注释符号#,请去掉. ...
- js switch表达式的例子
switch 这种表达式在很多语言中都有,比如java, C等待, 使用switch比使用if else 来得方便,来得清晰. 前言 switch 这种表达式在很多语言中都有,比如java, C等待 ...
- phpcms v9修改栏目描述的多行文本为编辑器方法
phpcms v9在添加栏目的时候,栏目描述为多行文本,无法满足有图片,以及格式的修改调整,那么仿站网今天告诉大家如何将他改为编辑器,方法如下 找到phpcms/moudles/admin/templ ...