C# IO流的操作

C# IO流的操作非常重要,我们读写文件都会使用到这个技术,这里先演示一个文件内容复制的例子,简要说明C#中的IO操作。

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //将文件内容读到流中
            Stream stream = File.Open("test.txt", FileMode.OpenOrCreate);

            //初始化一个字节数组
            byte[] bytes = new byte[(int)stream.Length];

            //将流读到字节数组中
            stream.Read(bytes, 0, bytes.Length);

            //用MemoryStream接收
            MemoryStream ms = new MemoryStream(bytes);

            //从开始处设置
            ms.Seek(0, SeekOrigin.Begin);

            //再把返回的MemoryStream 写到另一个文件中去
            ms.WriteTo(new FileStream("newFile.txt", FileMode.OpenOrCreate));
        }
    }
}

Stream是一个抽象类,而MemoryStream和FileStream都是Sream的子类。

而下面这个例子则演示了异步读取txt文本内容的方法。

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(GetTxt().Result);
        }

        /// <summary>
        /// 异步读取txt文本内容
        /// </summary>
        /// <returns></returns>
        public static async Task<string> GetTxt()
        {
            using (Stream stream = File.Open("test.txt", FileMode.OpenOrCreate))
            {
                using (StreamReader sr = new StreamReader(stream, Encoding.Default))
                {
                    return await sr.ReadToEndAsync();
                }
            }
        }
    }
}

关于IO更多的类以及操作请参考:https://msdn.microsoft.com/zh-cn/library/system.io(v=vs.110).aspx

时间: 2025-01-06 14:57:35

C# IO流的操作的相关文章

Java API —— IO流(数据操作流 &amp; 内存操作流 &amp; 打印流 &amp; 标准输入输出流 &amp; 随机访问流 &amp; 合并流 &amp; 序列化流 &amp; Properties &amp; NIO)

1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出流写入稍后由数据输入流读取的数据. · DataOutputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中.然后,应用程序可以使用数据输入流将数据读入. package datastreamdemos; import java.io.*; /** * Created b

Java文件IO流的操作总结

流就是管道,向管道里面写数据用输出流.write 从管道里面读数据,用输入流.read 流,按照不同的维度有不同的分类,按照从流中每次读取数据单位不同,划分为字节流字符流 按照流-对应操作的角色的不同(是IO设备,还是其他流)是否能够直接向特定的IO设备如文件.网络.磁盘等,能够直接与这些进行读写的称之为节点流, 对节点流进一步封装的流,通过封装后的流来实现读写功能,处理流也被称为高级流 流和数组不一样,不能通过索引读写数据.在流中,你也不能像数组那样前后移动读取数据,除非使用RandomAcc

对IO流的操作(文件大小,拷贝,移动,删除)

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.SequenceInputStream; class LjyFileClass { /*LjyFileClass工具类使用需知: * * 1.计算

java中IO流的操作

读取转换流--读取键盘录入中键盘录入一行数据并打印其大写,发现就是读一行数据的原理.也就是readLine方法.能不能直接使用readLine方法来完成键盘录入一行数据的读取呢?readLine方法是字符流BufferedReader类中的方法.而键盘录入的read方法是字节流InputStream的方法.那么能不能将字节流转换成字符流再去使用字符流缓冲区的readLine方法呢. public class TransStreamDemo { public static void main(St

JAVA面试题一 之 io流的操作

/*定义一个文件输入流,调用read(byte[] b)方法.      将a.txt文件中的内容打印出来(byte数组大小限制为5).*/ 拿到题以后要先整理出思路: 分析可知:      1.read(byte[] b)该方法属于字节输入流      2.byte数组大小限制为5,当碰到中文的时候极易出现乱码 解决的方案:使用内存流 public static void main(String[] args) throws IOException { FileInputStream fis

IO流文件目录操作

package com.net.bufan.t; import java.io.File;import java.io.IOException; public class FileReadAndWrite { public static void main(String[] args) throws IOException{ //创建文件 File f1 = new File("Text.txt") ; //创建成功返回true,有可能抛出IOException异常 f1.create

Java语言中IO流的操作规律学习笔记

1,明确源和目的. 数据源:就是需要读取,可以使用两个体系:InputStream.Reader: 数据汇:就是需要写入,可以使用两个体系:OutputStream.Writer: 总结: 读:就是把数据读入内存 写:就是把数据读出来 2,操作的数据是否是纯文本数据? 如果是:数据源:Reader 数据汇:Writer 如果不是:数据源:InputStream 数据汇:OutputStream 总结:纯文字的东西用字节流,其他用字节流 3,虽然确定了一个体系,但是该体系中有太多的对象,到底用哪个

IO流的操作规律

1.明确源和目的: 源:InputStream    Reader 目的:OutputStream       Writer 2.明确数据是否是纯文本数据 源: 是纯文本:Reader 不是纯文本:InputStream 目的:是纯文本:Writer 不是纯文本:OutputStream 先明确体系是哪个 3.明确具体的设备 源设备:硬盘(File).键盘(System.in).内存(数组).网络(Socket流). 目的设备:硬盘(File).控制台(System.out).内存(数组).网络

Java学习之IO流(操作对象)

操作对象 ObjectInputStream与ObjectOutputStream 就是把对象持久化(对象存储到硬盘上),表现形式就是对象文件 持久化对象必须实现Serializable接口 1 public class Person implements Serializable { 2 private String name; 3 private int age; 4 5 public Person() { 6 super(); 7 } 8 9 public Person(String na