国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
C#的輸入輸出流

C#的輸入輸出流 收藏
    一 .NET Framework 類庫的System.IO 命名空間

      System.IO 命名空間包含允許讀寫文件和數(shù)據(jù)流的類型以及提供基本文件和目錄支持的類型。

      二 C#文件讀寫之FileStream詳解

  1. (FileStream fs1 = File.Open("c:\test.txt", FileMode.Open));

  FileMode.Open 直接用FileStream類打開文件c:\test.txt"。

  2. (FileStream fs2 = File.Open("c:\test.txt", FileMode.Append, FileAccess.Write));

  FileMode.Append,以追加的方式打開文件"c:\test.txt",將某些內(nèi)容寫到"c:\test.txt"里。

  3.(FileStream fs3 =File.Open("c:\test.txt", FileMode.Truncate, FileAccess.ReadWrite, FileShare.Read)).

  FileMode.Truncate的意思是將文件打開清空里面的內(nèi)容后再對文件進行操作。

  4. FileStream MyFileStream1 = new FileStream(@"c:Testing.txt", FileMode.Create);

  這個方法的意思是創(chuàng)建一個可以讀寫的文件,并且可以允許其他人讀取文件的內(nèi)容。


      三 C#基于流的輸入輸出
      C#基于流的輸入輸出.:Stream-通過C# I/O 系統(tǒng)與物理設(shè)備連接起來,也就是平時讀寫的硬盤等物理存貯設(shè)備.流/Stream的方法和屬性有:
  Method/ Properties 描述
void Close() 關(guān)閉流
void Flush() 清理流中的內(nèi)容
int ReadByte() 返回一個整數(shù)表示輸入的字節(jié)數(shù),如果沒有數(shù)據(jù)返回-1
int Read(byte[ ] buf,int offset, int numBytes)   將numBytes個字節(jié)讀入到byte[ ]的以offset為,起始位置,返回讀入成功的字節(jié)數(shù)
 
Long Seek(long offset,SeekOrigin origin) 將當(dāng)前位置定位到以origin為初始位置以后的offset處.
void WriteByte(byte b) 將單個字節(jié)寫入到一個輸出流.
void Write(byte[ ] buf,int offset, int numBytes) 寫入byte[ ] buf中從offset開始的numBytes個字節(jié).
bool CanRead 是否可讀
bool CanSeek 是否支持尋址
bool CanWrite 是否可以寫入數(shù)據(jù)
long Length 流的長度
long Position 流的當(dāng)前位置.


  三. 流的繼承結(jié)構(gòu)

   Stream是一個很大類的,在讀寫文件的時候,可以通過不同的流進行專業(yè)的數(shù)據(jù)讀寫.

 

 


  The FileMode and FileAccess的幾條規(guī)則:

Value 意義
FileMode.Create 創(chuàng)建文件,之前存在同名的文件將被毀掉
FileMode.CreateNew 創(chuàng)建新文件,這個文件之前不存在
FileMode.Open 打開已經(jīng)存在的文件
FileMode.OpenOrCreate 打開文件如果存在,否則創(chuàng)建新文件
FileMode.Truncate 打開以存在的文件,將它的內(nèi)容清除掉
FileMode.Append 以追加的形式將數(shù)據(jù)寫入到文件的最后


  如果在打開文件的時候想限制文件訪問權(quán)限,那么可以做如下的構(gòu)造方法:

  FileStream(string filename, FileMode mode, FileAccess access);

                   文件名       文件模式       操作模式

  Access可以是以下當(dāng)中的一個值:

  FileAccess.Read/  FileAccess.Write/  FileAccess.ReadWrite;

  FileStreamfs=new FileStream(“c:\tab.txt”,FileMode.OpenOrCreate,FileAccess.Read);


C#中結(jié)合Post發(fā)送的Stream與Byte Array的操作似乎資料很少.下面是我這幾天的研究成果.功能是將同文件夾下的a.jpg復(fù)制生成b.jpg.代碼如下:

byteArray.aspx.cs

using System;

using System.IO;

using System.Data;

using System.Drawing;

using System.Drawing.Imaging;

using System.Net;

 

namespace bArray {

   public partial class imgHandler : System.Web.UI.Page
     {
        protected void Page_Load(object sender, EventArgs e)
         {
            try
            {
                Stream sin = Page.Request.InputStream;
                System.Drawing.Image img = System.Drawing.Bitmap.FromStream(sin);
                Bitmap bmp = new Bitmap(img);
                MemoryStream bmpStream = new MemoryStream();
                bmp.Save(bmpStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                FileStream fs = new FileStream(System.Web.HttpContext.Current.Server.MapPath("b.jpg"), FileMode.Create);
                bmpStream.WriteTo(fs);
                bmpStream.Close();
                fs.Close();
                bmpStream.Dispose();
                fs.Dispose();
                Response.Write("成功");
            }
            catch
            {
                Response.Write("失敗");
            }
        }
    }
}

 

gopost.aspx.cs

using System;

using System.IO;

using System.Drawing;
using System.Drawing.Imaging;

using System.Net;
using System.Text;

namespace gopost

{
    public partial class postHandler : System.Web.UI.Page
    {
       protected void Page_Load(object sender, EventArgs e)
        {

           postImage();
        }

       private void postImage()

        {
            try
            {
                HttpWebRequest request;
                string imgUrl = System.Web.HttpContext.Current.Server.MapPath("a.jpg");
                request = (HttpWebRequest)HttpWebRequest.Create(http://localhost/byteArray/byteArray.aspx);
                request.KeepAlive = true;
                request.Method = "POST";
                byte[] byteArray = CvtImgBArr((System.Drawing.Image)new Bitmap(@imgUrl), ImageFormat.Jpeg);
                request.ContentType = "image/JPEG";
                request.ContentLength = byteArray.Length;
                Stream newStream = request.GetRequestStream();
                newStream.Write(byteArray, 0, byteArray.Length);
                newStream.Close();
                Response.Write("復(fù)制圖片成功");
            }
            catch
            {

                Response.Write("復(fù)制圖片失敗");
            }

        }


        private static byte[] CvtImgBArr(System.Drawing.Image imageToConvert, ImageFormat formatOfImage)

        {

            byte[] imArr;
            try
            {
                using (MemoryStream myms = new MemoryStream())
                {

                    imageToConvert.Save(myms, formatOfImage);

                    imArr = myms.ToArray();
                }
            }

            catch (Exception) { throw; }
            return imArr;
        }

    }
}

相對來說,byte Array在Html表單中的應(yīng)用可能一直被忽視,但是正確的應(yīng)用byte Array可以大大的優(yōu)化程序,并做出一些意想不到的效果來。

C# Stream 和 byte[] 之間的轉(zhuǎn)換

 


/// <summary>
/// 將 Stream 轉(zhuǎn)成 byte[]
/// </summary>
public byte[] StreamToBytes(Stream stream)
{
    byte[] bytes = new byte[stream.Length];
    stream.Read(bytes, 0, bytes.Length);
    // 設(shè)置當(dāng)前流的位置為流的開始
    stream.Seek(0, SeekOrigin.Begin);
    return bytes;
}
/// <summary>
/// 將 byte[] 轉(zhuǎn)成 Stream
/// </summary>
public Stream BytesToStream(byte[] bytes)
{
    Stream stream = new MemoryStream(bytes);
    return stream;
}


/// <summary>
/// 將 Stream 寫入文件
/// </summary>
public void StreamToFile(Stream stream,string fileName)
{
    // 把 Stream 轉(zhuǎn)換成 byte[]
    byte[] bytes = new byte[stream.Length];
    stream.Read(bytes, 0, bytes.Length);
    // 設(shè)置當(dāng)前流的位置為流的開始
    stream.Seek(0, SeekOrigin.Begin);
    // 把 byte[] 寫入文件
    FileStream fs = new FileStream(fileName, FileMode.Create);
    BinaryWriter bw = new BinaryWriter(fs);
    bw.Write(bytes);
    bw.Close();
    fs.Close();
}
/// <summary>
/// 從文件讀取 Stream
/// </summary>
public Stream FileToStream(string fileName)
           
    // 打開文件
    FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
    // 讀取文件的 byte[]
    byte[] bytes = new byte[fileStream.Length];
    fileStream.Read(bytes, 0, bytes.Length);
    fileStream.Close();
    // 把 byte[] 轉(zhuǎn)換成 Stream
    Stream stream = new MemoryStream(bytes);
    return stream;
}

另外,XML的一個應(yīng)用是序列化,要用到把字符串轉(zhuǎn)化成byte數(shù)組,方法:
     byte[] bytes = System.Text.UTF8Encoding.UTF8.GetBytes(XmlContent);
相對的,把byte數(shù)組轉(zhuǎn)化為字符串的方法則為:
  string XmlContent = System.Text.UTFEncoding.UTF8.GetString(bytes);

從字符串到流Stream

byte[] buffer = System.Text.Encoding.Unicode.GetBytes("faint");
MemoryStream stream = new MemoryStream(buffer);

MemoryStream ms = new MemoryStream(System.Text.Encoding.Default.GetBytes(AObjStr));

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
筆記5:vb.net的FileStream操作
計算文件的MD5值(比較兩個文件是否一樣)
串聯(lián)波文件使用CSharp 2005
C#中文件和byte[]互換問題
C#實現(xiàn)WebService上傳下載文件
C# MemoryStream和BinaryFormatter
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服