首页 > C#基础篇--文件(流)

C#基础篇--文件(流)

1:Path类是专门用来操作文件路径的(Path类是静态类):当然用字符串的处理办法也能实现。 
string str = @"C:Users成才DesktopHashtable.txt";
            //返回文件名
            Console.WriteLine(Path.GetFileName(str));
            //返回文件名,但不包括扩展名
            Console.WriteLine( Path.GetFileNameWithoutExtension(str));
            //返回文件所在的文件夹名
            Console.WriteLine(Path.GetDirectoryName(str));
            //返回文件的扩展名
            Console.WriteLine(Path.GetExtension(str));
            //连接两个字符串作路径
            Console.WriteLine(Path.Combine(@"C:a","b.txt"));
   
   
2:File这个静态类是用来处理文件的(创建、删除、复制等) 
File.Create(@"C:ad.txt");
File.Delete(@"C:ad.txt");
File.Cope(@"C:ad.txt");
 
编码:将字符串以怎样的格式保存为二进制。
乱码:产生乱码的原因就是你保存这个文件所采用的编码格式和你打开这个文件所采用的编码格式不一样。
文本文件:拖到txt文件中还能看懂的文件就是文本文件。
 
3:读取文本文件:
//以UTF-8的编码格式读取1.txt这个文件
byte[] buffer= File.ReadAllBytes(@"C:Users成才Desktop1.txt");
string str=Encoding.GetEncoding("UTF-8").GetString(buffer);
Console.WriteLine(str);
Console.ReadKey();
 
4:向指定的路径写入文件:
//以默认的格式(ANSI)写入文件。
string str="我们都有一个家,名字叫中国!!!!";
byte[] buffer=Encoding.Default.GetBytes(buffer);
File.WriteAllBytes(@"C:Users成才Desktop2.txt",buffer);
Console.ReadKey();
 
5:File.ReadAllLines(路径,读取的编码方式); //返回一个字符串数组 
File.ReadAllText(路径,读取的编码方式); //返回一个字符串
前面这两个方法只能读取文本文件,不能读取音乐文件、多媒体文件等;
File.RradAllBytes(); //返回一个字节(byte)数组,可以读取各种文件,包括音乐、视频文件。
 
6:绝对路径和相对路径 
绝对路径:通过给定的这个路径直接能在我的电脑中找到这个文件。
相对路径:文件相对于应用程序的路径。
我们在开发的过程中尽量使用相对路径;
 
7:File.WriteAllLines(路径,字符串数组);
File.WriteAllText(路径,字符串);
File.WriteAllBytes(路径,字节数组); //这三个方法都会覆盖掉之前文本中有的东西。
 
8:在文本的后面追加东西有这几个方法:
File.AppendAllLines(路径,字符串数组);
File.AppendAllText(路径,字符串);
 
File类只能用来读取小文件,读取大文件需要用文件流;
 
 
8:泛型List
List list=new List();
list.Add();
list.AddRange();
list.Remove();
list.removeAt();
list.Clear();
list.Reverse();
泛型要比数组方便的多,类型一旦确定就能像动态数组一样用,并且泛型和数组之间可以相互转化;
如:int[] nums=list.ToArrray();
string[] str={"a","b","c"};
List listtwo= str.ToList();
 
 
 
 
9:装箱、拆箱
装箱:将值类型转换为引用类型。
拆箱:将引用类型转换为值类型。
看两种类型是否发生了装箱或者拆箱,要看两者之间是否有继承关系;如果没有继承关系,一定没有发生装箱或者拆箱,有继承关系才有可能发生装箱或者拆箱。
在我们的代码中,要尽量避免装箱或者拆箱,因为这样时间会浪费内存,耗时较长。
 
 
10:Dictionary 字典
Dictionary dic=new Dictionary();
dic.Add(1,"a");
dic.Add(2,"b");
dic.Add(3,"c");
dic[1]="新来的";
遍历的时候:
Foreach(Var item in dic.Keys)
{
 Console.WriteLine("{0}----{1}",item,dic[item]);
}
或者是:
Foreach(KeysValuePair kv in dic)
{
 Console.WriteLine("{0}----{1}",kv.Keys,kv.Values);
}
 
 
11:
FileStream是操作字节的,因此可以操作包括文本以外的其它各种文件;
StreamReader和StreamWriter是操作字符的,因此只能操作文本文件。
 
 
12:
将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的空间。
StreamReader和StreamWriter是专门用来操作文件的,如果只针对文件的话,用StreamReader
和StreamWriter要比FileStream方便的多。
接触到关于流的类时,一定要记得把创建对象的部分写在using里面,否则会容易造成忘记释放
资源,而造成内存泄漏。
用FileStream的好处是,可以操作任意类型的文件,但是中间要涉及到编码格式的转换。

转载于:https://www.cnblogs.com/ZT-SummerRain/p/4547966.html

更多相关:

  • 本文来自 运维人生 ,作者:fly是个稻草人链接:http://www.ywadmin.com/?id=76误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收...

  • 原文来自SecIN社区—作者:WiHat0x00 什么是WebShell渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而...

  • 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面是「北极」的回复分享断电的一瞬间,很多事情是无法确定的:1. 你无法确定...

  • 接到项目需求。需要搭建一个页面进行交互,慢慢来b (2).jpg使用python django框架进行页面的搭建在项目文件下打开窗口,输入命令;django-admin startproject helloword#在文件helloword/helloword/创建view.py在view.py文件中输入以代码from django....

  • 常见的错误集合解决方案(一)No.1提示错误'Microsoft.VC90.CRT,version="9.0.21022.8"把Microsoft.NET Framework 3.5.1下面的全部勾选上。No.2解决Qt Designer设计的图标但是VS生成不显示问题描述:在Qt designer中为菜单栏和工具栏设计的图标,但是...

  • 大牛们应该对路径都很了解了,这篇文章主要给像我这样的入门小白普及常识用的,啊哈下面的路径介绍针对windows,其他平台的暂时不是很了解。在编写的py文件中打开文件的时候经常见到下面其中路径的表达方式:open('aaa.txt')open('/data/bbb.txt')open('D:\user\ccc.txt')这三种表达式...

  • 1)绝对路径:绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。例如:C:windowssystem32cmd.exe  注意: 在不同系统的情况系 windows下是“”,linux和unix下是“/” ,但在win中没有本质区别。linux和unix系统中绝对路径 以“/”为起始 例:/home/us...

  •     最终运行效果 当然,这个Application context路径可以直接删掉不需要最终访问路径就会变成http://localhost:8080/...

  •     1、在js代码里面 或者 html里面用"v-bind:"或":属性名"绑定路径的时候使用 require('@/assets/home/imgName.png') 2、在css或者scss或者html里面的src中引入图片使用(注意如果是:src=后面用第1种方式引入路径) ~@/assets/components...

  • 寻路算法大总结! 交换机生成树采用的是完全不同的D-V(distance vector)距离矢量算法,并不是很可靠. 并不是任意两点之间的最短路径,因为任意两点之间取最短路径可能有环路:总权更大 交换机STP不一定是最小生成树!!!举例论证 因为它只是所有交换机到根桥最短 贪心算法的味...

  • 运算符一.算数运算:二.比较运算:三.赋值运算四.逻辑运算 五.成员运算基本数据类型一.Number(数字)Python3中支持int、float、bool、complex。使用内置的type()函数查询变量类型。int(整型)在python2中整数类型有两种一个是int,表示整型,一种是long,表示长整型。而在python3中整数...

  • 题目:面试题38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 输入:s = "abc" 输出:["abc","acb","bac","bca","cab","cba"] 限制: 1 <= s 的长度 <= 8 解题: clas...

  •      给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出:...

  • Redis没有使用C语言字符串的形式,通过’’作为结尾,而是使用了简单动态字符串(simple dynamic string)。 当Redis使用的字符串不需要修改字符串的内容的时候,可以使用C语言提供的字符串,当需要修改内容的时候就使用的是简单动态字符串。Redis键值对的操作中,都是使用的简单动态字符串的方式。 这里可以把简...

  • 设计思路:导入Scanner类输入字符串,再将输入的字符串转化为字符数组,然后从字符串左右两侧依次比较字符chu是否相同,若相同递归返回读取的字符个数,若返回字符的个数==输入字符串的长度,则输出该字符串是回文,否则输 出该字符串不是回文   import java.util.Scanner;public class test1...