Stream hỗ trợ ựọc và ghi dữ liệu ựồng bộ và không ựồng bộ. .Net Framework cung cấp một số lớp dẫn xuất từ lớp Stream, bao gồm cả FileStream, MemoryStream, và NetworkStream. Có một lớp BufferedStream cung cấp một vùng ựệm I/O và có thể sử dụng cho bất kỳ luồng nhập xuất nàọ
Sau ựây là những lớp I/O chắnh của .Net Framework
Lớp Cách sử dụng
Stream Abstract class that supports reading and writing
bytes.
BinaryReader/BinaryWriter Read and write encoded strings and primitive datatypes to and from streams.
File, FileInfo, Directory, DirectoryInfo
Provide implementations for the abstract FileSystemInfo classes, including creating, moving, renaming, and deleting files and directories.
FileStream
For reading to and from File objects; supports random access to files. Opens files
synchronously by default; supports asynchronous file access.
Lớp Cách sử dụng
Textreader,TextWriter, StringReader, StringWriter
TexTReader and TextWriter are abstract classes designed for Unicode character I/Ọ StringReader and StringWriter write to and from strings, allowing your input and output to be either a stream or a string.
BufferedStream
A stream that ađs buffering to another stream such as a NetworkStream. BufferedStreams can improve performance of the stream to which they are attached, but note that FileStream has buffering built in.
MemoryStream
A nonbuffered stream whose encapsulated data is directly accessible in memory, and is most useful as a temporary buffer.
NetworkStream A stream over a network connection.
StreamReader Implements a TextReader that reads characters
from a byte stream in a particular encoding
StreamWriter
Implements a TextWriter for writing information to a string. The information is stored in an underlying StringBuilder. BộI 26: NHẺP XUÊT VắI TỷP TIN V¡N BờN 26.1. Sỏ dông cịc lắp nhẺp xuÊt tỷp tin vẽn bờn
để ựọc/ghi dữ liệu vào tệp văn bản .Net Framework cung cấp cho ta hai lớp rất dễ sử dụng ựó là lớp StreamWriter và StreamReader có chứa các phương thức ựể giúp ta rất dễ dàng thao tác trên tệp văn bản giống như ta thao tác với việc ựọc ghi dữ liệu trên mà hình, bàn phắm.
Vắ dụ 1: Nhập vào từ bàn phắm nội dung một bài thơ và ghi nó vào một tệp văn bản
using System.IO; class ViDu {
static void Main() { string fileName; string cauTho; string tenBaiTho; bool ok; ConsoleKeyInfo kt; do{
ConsolẹWrite("Nhap vao ten tep chua bai tho:"); fileName = ConsolẹReadLine();
ok = false;
if(FilẹExists(fileName)) {
ConsolẹWriteLine("Tep nay da ton tai ban co muon ghi de C/K?"); kt=ConsolẹReadKey();
if (kt.KeyChar == 'c' || kt.KeyChar == 'C') ok = false; else ok = true;
}
}while(ok);
StreamWriter myfile=FilẹCreateText(fileName);
ConsolẹWriteLine("\t\tBAN HAY NHAP VAO MOT BAI THO BAN YEU THICH\n");
ConsolẹWrite("Nhap vao ten bai tho:");tenBaiTho = ConsolẹReadLine(); myfilẹWriteLine("\t\t{0}", tenBaiTho); myfilẹWriteLine(); int i=0; do { ConsolẹWrite("Cau {0}:", ++i); cauTho = ConsolẹReadLine(); myfilẹWriteLine("{0}:{1}",i,cauTho);
ConsolẹWriteLine("Ban co muon nhap tiep C/K"); kt = ConsolẹReadKey();
} while (kt.KeyChar == 'c' || kt.KeyChar == 'C'); myfilẹClose();
} }
Vắ dụ 2: Cho một tệp văn bản có tên là D:/thọtxt hãy ựọc nội dung tệp và ựưa ra màn hình
using System; using System.IO; class Test
{
public static void Main() {
try {
using (StreamReader sr = new StreamReader("d:/thọtxt")) {
string line;
// Read and display lines from the file until the end of // the file is reached.
while ((line = sr.ReadLine()) != null) { ConsolẹWriteLine(line); } } } catch (Exception e) {
ConsolẹWriteLine("Khong the doc duoc noi dung tep"); ConsolẹWriteLine(ẹMessage);
}
ConsolẹReadKey(); }
}
Vắ dụ 3: Cho một tệp có tên là d:\dulieụtxt lưu trữ thông tin về n dãy số. Biết rằng các phần tử của mỗi dãy ựược lưu trên một dòng, giữa các phần tử của dãy
ựặt cách nhau ắt nhất một dấu cách . Hãy ựọc nôi dung tệp và tìm giá trị lớn nhất trong số các phần tử của các dẫy và ghi giá trị này vào cuối tệp
using System; using System.IO; class ViDu1 {
static void Main() {
string xau;
int[][] a=new int[50][]; int d,n=0;
StreamReader f1=FilẹOpenText("D:/dulieụtxt"); xau = f1.ReadLine();
do{
d = 0;
foreach(string con in xaụSplit(' ')) if (con.Length > 0) { ArraỵResize(ref a[n], ++d); a[n][d - 1] = int.Parse(con); } xau = f1.ReadLine(); n = n + 1; }while(xau!=null); f1.Close(); int j,i,max=a[0][0]; for (i = 0; i < n; ++i) for (j = 0; j < a[i].Length; ++j) if (max < a[i][j]) max = a[i][j];
StreamWriter f2 = FilẹAppendText("D:/dulieụtxt"); f2.WriteLine();
f2.WriteLine("Phan tu lon nhat cua cac day la {0}", max); f2.Close();
} }