C# 类笔记3 (ArrayList, HashTable, List, Dictionary, Path, File, FileStream, StreamReader, StreamWrite )

传智教育 赵建宇 c# 基础

集合元素

ArrayList

  • 集合可以添加任意类型,任意长度的元素。
  • 数组只能添加固定长度,单一类型的元素。
  • ArrayList的参数为object 类型,所以可以添加任意类型元素。
ArrayList list = new ArrayList();
// Add 任意类型的单个元素
list.Add(1);
list.Add(True);
// Add list element
list.AddRange(new int[]{1,2,3,4,5,6,7,8,9});
list.AddRange(list);
// 清空所有元素
list.Clear();
// 删除单个元素,写谁就删谁
list.Remove(true);
list.RemoveAt(num); //删除下标
list.RemoveRange(0,3);
list.Sort();
list.Reverse();
list.Insert(position, content);
list.InsertRange(position, new string[]{"张三","李四"});
bool b = list.contains(1);

list.Count     // 实际包含的元素的个数
list.Capacity  // 可包含的元素的个数 超过时开辟2的倍数个元素

HashTable 键值对集合

在键值对集合中,是根据键去找值的

using System.Collections;

Hashtable ht = new Hashtable();
ht.Add(1, "Hello");
ht.Add(2, "World");
ht.Add(3, "male");
ht.Add(false, "false");
ht.Contain(key);
ht.ContainKey(key);
ht.ContainValue(value);
ht.clear();
ht.remove(key);
foreach (var item in ht.Values)
{
  // var:根据值能够推断出来类型
  // C# 是一门强类型语言: 在代码中,必须对每一个变量的类型有一个明确的定义
  // js 是一门弱类型语言
  Console.WriteLine(item);
}

泛型集合 List

泛型集合类似于数组,元素类型和集合类型一样。

//创建泛型集合对象
            List<int> list = new List<int>();
            list.Add(1);
            list.Add(2);  
            list.Add(3);
            list.AddRange(new int[] { 1, 2, 3, 4, 5, 6 });
            list.AddRange(list);
            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }

            // List 泛型集合可以转换为数组
            int[] array = list.ToArray();
            for (int i = 0; i < array.Length; i++)
            {
                Console.Write(array[i]);
            }
            array.ToList().ForEach(x => Console.WriteLine(x));
            list.ForEach(y => Console.WriteLine(y));

Dictionary 类

 static void Main(string[] args)
        {
            Dictionary<int, string> dic = new Dictionary<int, string>(); // 类似于HashTable, 只不过字典类型是规定好了类型。
            dic.Add(1, "hello");
            dic.Add(2, "World");
            dic.Add(3, "nihao");
            dic[1] = "new";
            foreach (var item in dic)
            {
                Console.WriteLine(item);
            }
            foreach (var item in dic.Keys)
            {
                Console.WriteLine("{0} ---- {1}",item, dic[item]);
            }
            foreach (var item in dic.Values)
            {
                //Console.WriteLine("{0} ---- {1}", item, dic[item]);
            }
            foreach (KeyValuePair<int,string> item in dic)
            {
                Console.WriteLine("{0} ---- {1}", item.Key, item.Value);
            }
        }

Path 类

Path 类是static 静态类,不能创建对象。调用方法是使用className.methodName。

string str = @"c:\3000soft\red spider\data\message\hha.txt";
//获得文件名
Path.GetFileName(str);
Path.GetFileNameWithoutExtension(str);
Path.GetExtension(str);
Path.GetDirectoryName(str);
Path.GetFullPath(str);
Path.Combine(@"c:\a\","b.txt");

File 类

文件操作: File 类一般用来读小文件,否则会浪费很多时间,因为File类读文件时是一次性读取。

File.Create(@"C:\Users\SpringRain\Desktop\new.txt");
File.Delete(@"C:\Users\SpringRain\Desktop\new.txt");
File.Copy(@"C:\Users\SpringRain\Desktop\new.txt",@"C:\Users\SpringRain\Desktop\test.txt");
//Encoding format Unicode:(UTF-8, UTF-32), ASCII, GBK, GB2312
byte[] buffer = File.ReadAllBytes(@"C:\Users\SpringRain\Desktop\abc.txt");
string s = Encoding.GetEncoding("GB2312").GetString(buffer);
File.WriteAllBytes(@"C:\Users\SpringRain\Desktop\abc.txt", buffer);
string[] contents = File.ReadAllLines(filename, Encoding.default);
foreach (string content in contents)
{
	Console.WriteLine(content);
}
string str = File.ReadAllText(filename, Encoding.Default);
Console.WriteLine(str);

FileStream 类

class Programs
    {
        static void Main(string[] args)
        {
            // read data
            //FileStream fsRead = new FileStream(@"F:21.matplotlib", FileMode.OpenOrCreate, FileAccess.Read);
            //byte[] buffer = new byte[1024 * 1024 *5]; //5M
             return the actual size of the data 
            //int r = fsRead.Read(buffer, 0, buffer.Length); // read 5M data start from position 0.
            //string s = Encoding.Default.GetString(buffer, 0, r);
            //fsRead.Close(); // close stream
            //fsRead.Dispose();  // release stream

             use FileStream to write data
            使用using来创建流,使用完毕后会自动释放空间。
            //using(FileStream fsWrite = new FileStream(@"C:\test.txt", FileMode.OpenOrCreate, FileAccess.Write))
            //{
            //    string str = "helloworld nihao ma haha h";
            //    //byte[] buffer2 = Encoding.Default.GetBytes(str);
            //    byte[] buffer2 = Encoding.UTF8.GetBytes(str);
            //    fsWrite.Write(buffer2, 0, buffer2.Length);
            //}
            string sourceFile = @"F:\21.matplotlib\1.ts";
            string targetFile = @"C:\test.ts";
            Stopwatch sw = new Stopwatch();
            sw.Start();
            copyFile(sourceFile, targetFile);
            sw.Stop();
            Console.WriteLine(sw.Elapsed);
        }
        public static void copyFile(string sourceFile, string targetFile)
        {
            using (FileStream fsRead = new FileStream(sourceFile, FileMode.Open, FileAccess.Read))
            {
                using (FileStream fsWrite = new FileStream(targetFile, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    byte[] buffer = new byte[1024 * 1024 * 5]; //5M
                                                               // return the actual size of the data
                    int r;
                    do{
                        r = fsRead.Read(buffer, 0, buffer.Length); // read 5M data start from position 0.
                        fsWrite.Write(buffer, 0, r);
                    } while (r != 0);
                }
            }
        }
}

StreamReader 读取文本文件

streamReader 读取文本文件比FileStream 简单一些。 每次从文件中读取一行。

// read from file
using(StreamReader sr = new StreamReader(@"FilePath", Encoding.default))
{
	while(!sr.EndOfStream)
	{ 
		Console.WriteLine(sr.ReadLine());
	}
}

// Write to File
//using (StreamWriter sw = new StreamWriter(@"fileName", Encoding.default, true))
using (StreamWriter sw = new StreamWriter(@"fileName", Encoding.default))
{
	sw.Write("content"); //覆盖之前的内容, 创建对象时添加变量 true, 就不会覆盖之前的内容
	                  
	
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anunnaki_IO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值