博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BinaryReader,BinaryWriter
阅读量:6083 次
发布时间:2019-06-20

本文共 6549 字,大约阅读时间需要 21 分钟。

  1 
using
 System;
  2 
using
 System.IO;
  3 
using
 System.Globalization;
  4 
using
 System.Text;
  5 
using
 System.Data;
  6 
using
 System.Xml;
  7 
  8 
  9 
public
 
class
 BinStream
 10 
{
 11 
    
public
 BinStream()
 12 
    {
 13 
        Writer();
 14 
        Reader();
 15 
        
//
ReaderWriteFile();
 16 
    }
 17 
    
public
 
static
 
void
 Main()
 18 
    {
 19 
        BinStream bs 
=
 
new
 BinStream();
 20 
        Console.ReadLine();
 21 
 22 
 23 
 24 
    }
 25 
 26 
 27 
    
private
  
void
 BinaryReaderWriterDemo()
 28 
    {
 29 
 30 
        
string
 FileName 
=
 
"
SampleDates.txt
"
;
 31 
 32 
        FileStream myStream;
 33 
 34 
        BinaryWriter myWriter;
 35 
 36 
        BinaryReader myReader;
 37 
 38 
        DateTime theDate;
 39 
 40 
        Int64 dateInTicks;
 41 
 42 
        myStream 
=
 
new
 FileStream(FileName, FileMode.OpenOrCreate,
 43 
            FileAccess.Write, FileShare.ReadWrite);
 44 
 45 
        myWriter 
=
 
new
 BinaryWriter(myStream);
 46 
 47 
        theDate 
=
 DateTime.Now;
 48 
 49 
        
do
 50 
        {
 51 
 52 
            myWriter.Write(theDate.ToUniversalTime().Ticks);
 53 
 54 
            theDate 
=
 theDate.AddDays(
1
);
 55 
 56 
        } 
while
 (theDate 
<
 DateTime.Now.AddDays(
7
));
 57 
 58 
        myWriter.Close();
 59 
 60 
        myStream.Close();
 61 
        Console.WriteLine(
"
Data Written!
"
);
 62 
        Console.WriteLine(theDate.ToUniversalTime().Ticks.ToString());
 63 
        Console.WriteLine();
 64 
        myStream 
=
 
new
 FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
 65 
 66 
        myReader 
=
 
new
 BinaryReader(myStream);
 67 
        myReader.BaseStream.Seek(
0
, SeekOrigin.Begin);
 68 
        
for
 (
int
 i 
=
 
0
; i 
<
 
7
; i
++
)
 69 
        {
 70 
 71 
            dateInTicks 
=
 (myReader.ReadInt64());
 72 
 73 
            theDate 
=
 
new
 DateTime(dateInTicks);
 74 
 75 
            Console.WriteLine(
"
{0} ticks is {1}
"
, dateInTicks, theDate.ToLongTimeString());
 76 
 77 
            Console.WriteLine(theDate.ToLongDateString());
 78 
 79 
        }
 80 
 81 
        myReader.Close();
 82 
 83 
        myStream.Close();
 84 
 85 
    } 
 86 
 87 
 88 
    
private
 
void
 Writer()
 89 
    {
 90 
        
try
 91 
        {
 92 
            Console.Out.WriteLine(
"
Preparing to Write ...
"
);
 93 
            
//
Open a FileStream on the file "aboutme"
 94 
            FileStream fout 
=
 
new
 FileStream(
"
aboutme.txt
"
, FileMode.OpenOrCreate,
 95 
            FileAccess.Write, FileShare.ReadWrite);
 96 
            
//
Create a BinaryWriter from the FileStream
 97 
            BinaryWriter bw 
=
 
new
 BinaryWriter(fout);
 98 
            
//
Create some arbitrary variables
 99 
            
string
 name 
=
 
"
Saurabh塗聚文,涂斯博。
"
;
100 
            
int
 age 
=
 
20
;
101 
            
double
 height 
=
 
5.11
;
102 
            
bool
 single 
=
 
true
;
103 
            
char
 gender 
=
 
'
M
'
;
104 
            
//
Write the values to file
105 
            bw.Write(name);
106 
            bw.Write(age);
107 
            bw.Write(height);
108 
            bw.Write(single);
109 
            bw.Write(gender);
110 
            
//
Close the file and free resources
111 
            bw.Close();
112 
            Console.WriteLine(
"
Data Written!
"
);
113 
            Console.WriteLine();
114 
115 
          
string
 utf8String 
=
 
"
anqing:瀹夊簡
"
;
//
ASCII中文
116 
117 
         
//
 Create two different encodings.
118 
         Encoding utf8
=
 Encoding.UTF8;
119 
         Encoding defaultCode
=
 Encoding.Default;
120 
121 
         
//
 Convert the string into a byte[].
122 
         
byte
[] utf8Bytes 
=
 defaultCode.GetBytes(utf8String);
123 
124 
         
//
 Perform the conversion from one encoding to the other.
125 
         
byte
[] defaultBytes 
=
 Encoding.Convert(utf8, defaultCode, utf8Bytes );
126 
            
127 
         
//
 Convert the new byte[] into a char[] and then into a string.
128 
         
//
 This is a slightly different approach to converting to illustrate
129 
         
//
 the use of GetCharCount/GetChars.
130 
         
char
[] defaultChars 
=
 
new
 
char
[defaultCode.GetCharCount(defaultBytes , 
0
, defaultBytes .Length)];
131 
         defaultCode.GetChars(defaultBytes , 
0
, defaultBytes .Length, defaultChars , 
0
);
132 
         
string
 defaultString 
=
 
new
 
string
(defaultChars );
133 
134 
         
//
 Display the strings created before and after the conversion.
135 
         Console.WriteLine(
"
Original string: {0}
"
, utf8String);
136 
         Console.WriteLine(
"
Ascii converted string: {0}
"
, defaultString);
137 
138 
         
//
或者如下:
139 
         
//
byte[] buffer1 = Encoding.Default.GetBytes(utf8String );
140 
         
//
byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.Default, buffer1, 0, buffer1.Length);
141 
         
//
string strBuffer = Encoding.Default.GetString(buffer2, 0, buffer2.Length);
142 
143 
144 
         
string
 testfile 
=
 
@"
weatherutf.txt
"
;
//
直接看文件是亂碼
145 
146 
         
//
 create a test file using BinaryWriter
147 
         FileStream fs 
=
 File.Create(testfile);
148 
         UTF8Encoding utf 
=
 
new
 UTF8Encoding();
149 
150 
         BinaryWriter bws 
=
 
new
 BinaryWriter(fs, utf8);
151 
         
string
 bstring;
152 
153 
         bstring 
=
 
"
This is line #1 of text 涂聚文,塗鴉written as a binary stream.\r\n
"
;
154 
         bstring 
+=
 
"
This is line #2 of text written as a binary stream.\r\n
"
;
155 
         bstring 
+=
 
"
This is line #3 of text written as a binary stream.
"
;
156 
         bws.Write(bstring);
157 
158 
         
//
 reset the stream position for reading
159 
         fs.Seek(
0
, SeekOrigin.Begin);
160 
161 
         
//
 Read the string as raw bytes using FileStream...
162 
         
//
 The first series of bytes is the UTF7 encoded length of the
163 
         
//
 string. In this case, however, it is just the first two bytes.
164 
         
int
 len 
=
 fs.ReadByte() 
&
 
0x7f
;
165 
         len 
+=
 fs.ReadByte() 
*
 
0x80
;
166 
         
//
 read the string as bytes of length = len
167 
         
byte
[] rawbytes 
=
 
new
 
byte
[len];
168 
         fs.Read(rawbytes, 
0
, len);
169 
170 
         
//
 display the string
171 
         Console.WriteLine(
"
Read from FileStream:   \n
"
 
+
 utf8.GetString(rawbytes));
172 
         Console.WriteLine();
173 
174 
         
//
 Now, read the string using BinaryReader
175 
176 
         
//
 reset the stream position for reading again
177 
         fs.Seek(
0
, SeekOrigin.Begin);
178 
179 
         BinaryReader br 
=
 
new
 BinaryReader(fs, utf8);
180 
         
//
 ReadString will read the length prefix and return the string.
181 
         bstring 
=
 br.ReadString();
182 
         Console.WriteLine(
"
Read from BinaryReader: \n
"
 
+
 bstring);
183 
         fs.Close();
184 
185 
186 
        }
187 
        
catch
 (IOException e)
188 
        {
189 
            Console.WriteLine(
"
An IO Exception Occurred :
"
 
+
 e);
190 
        }
191 
    }
192 
   
private
 
void
 Reader()
193 
    {
194 
        
try
195 
        {
196 
            Console.WriteLine(
"
Preparing to Read ...
"
);
197 
            
//
Open a FileStream in Read mode
198 
            FileStream fin 
=
 
new
 FileStream(
"
aboutme.txt
"
, FileMode.Open,
199 
            FileAccess.Read, FileShare.ReadWrite);
200 
            
//
Create a BinaryReader from the FileStream
201 
            BinaryReader br 
=
 
new
 BinaryReader(fin);
202 
            
//
Seek to the start of the file
203 
            br.BaseStream.Seek(
0
, SeekOrigin.Begin);
204 
            
//
Read from the file and store the values to the variables
205 
            
string
 name 
=
 br.ReadString();
206 
            
int
 age 
=
 br.ReadInt32();
207 
            
double
 height 
=
 br.ReadDouble();
208 
            
bool
 single 
=
 br.ReadBoolean();
209 
            
char
 gender 
=
 br.ReadChar();
210 
            
//
Display the data on the console
211 
            Console.WriteLine(
"
Name :
"
 
+
 name);
212 
            Console.WriteLine(
"
Age :
"
 
+
 age);
213 
            Console.WriteLine(
"
Height :
"
 
+
 height);
214 
            Console.WriteLine(
"
Single? :
"
 
+
 single);
215 
            Console.WriteLine(
"
Gender M/F:
"
 
+
 gender);
216 
            
//
Close the stream and free the resources
217 
            br.Close();
218 
            Console.WriteLine(
"
Data Read!
"
);
219 
        }
220 
        
catch
 (IOException e)
221 
        {
222 
            Console.WriteLine(
"
An IO Exception Occurred :
"
 
+
 e);
223 
        }
224 
    }
225 
}

转载地址:http://sbkwa.baihongyu.com/

你可能感兴趣的文章
小错误汇总
查看>>
docker容器的两类存储
查看>>
从Controller到View(一)
查看>>
关于&、双引号、和单引号的解释
查看>>
LeetCode - Nth Digit
查看>>
background-clip&background-origin
查看>>
js读书笔记(2)
查看>>
修改表数据
查看>>
Web应用的目录结构
查看>>
jdk安装
查看>>
sendToTarget与sendMessage
查看>>
Datastage里Aggregator的一些注意事项
查看>>
验证String、StringBuffer、StringBuilder区别
查看>>
【中文】Joomla1.7扩展介绍之Modules Anywhere
查看>>
Java知多少(61)线程优先级
查看>>
Linux-HA实战(3)— 基于Pacemaker搭建TFS Nameserver HA
查看>>
Java和H5前端区别
查看>>
hdu6049
查看>>
Java多线程系列目录
查看>>
冷门_可变参数方法
查看>>