игра брюс 2048
Главная / Программирование / Практикум прикладного программирования на C# в среде VS.NET 2008 / Тест 19

Практикум прикладного программирования на C# в среде VS.NET 2008 - тест 19

Упражнение 1:
Номер 1
Если свойство CanRead = False, то мы не можем использовать следующие методы, унаследованные от класса Stream: 
        

Ответ:

 (1) Read  

 (2) ReadByte  

 (3) WriteByte  


Номер 2
Если свойство CanSeek = False, то мы не можем использовать следующие свойства и методы, унаследованные от класса Stream:
          

Ответ:

 (1) Length  

 (2) Set Length  

 (3) Seek  


Номер 3
Если свойство CanWrite = False, то мы не можем применять следующие методы класса Stream:
          

Ответ:

 (1) Write  

 (2) BeginWrite  

 (3) EndWrite  


Упражнение 2:
Номер 1
Класс MemoryStream может использоваться для создания потока, содержимое которого хранится:
         

Ответ:

 (1) на диске  

 (2) в сети  

 (3) в памяти  


Номер 2
Байтовый массив, зарезервированный классом MemoryStream, может иметь как фиксированную, так и произвольную длину; в последнем случае мы можем:

Ответ:

 (1) изменять размер массива  

 (2) читать из массива  

 (3) записывать в массив  


Номер 3
Пространство имен System.IO содержит следующие классы для чтения потоков:

Ответ:

 (1) класс BinaryReader для работы с примитивными типами данных  

 (2) класс BinaryWriter для работы с примитивными типами данных  

 (3) класс StringReader для работы с потоками  


Упражнение 3:
Номер 1
 Рассмотрим пример кода:
struct Situation 
{
 //Наш поток
 public FileStream filestream;
 //Здесь будем хранить данные
 public byte [] bText;
 //Размер буфера
 public long bufSize;
public MaualResetEvent manualresetevent;
}
static void EndAsingRead(IAsyncResult iasyncresult)
{
Situation situation = (Situation)iasyncresult.AsyncState;	
int readCount = situation.filestream.EndRead(iasyncresult);
 situation.filestream.Close();
situation.manualresetevent.Set(); 
 situation.manualresetevent.Close();
}

Если в приведенном выше коде закоментировать строку situation.manualresetevent.Set(), то в этом случае:
 

Ответ:

 (1) в функции EndAsingRead данные не будут выведены вообще  

 (2) будет выведено содержимое текстового файла только после окончания операции чтения  

 (3) будет выведено содержимое текстового файла перед окончанием операции чтения  


Номер 2

Пример кода:
  {
 bArray[i]=(byte)numrandom.Next(48,57);					
 textBox1.Text+=bArray[i];
}				
fileStream.Write(bArray,0,10); 

демонстрирует: 

Ответ:

 (1) использование метода Write  

 (2) использование метода WriteByte  

 (3) использование метода ReadByte  


Номер 3
Пример кода:

private void button1_Click(object sender, System.EventArgs e)
{
 manualresetevent=new ManualResetEvent(false);
 Thread thread1 = new Thread(new ThreadStart(AsynchronProcess1));
 //Процесс 1 стартует первым
 thread1.Start();
 Thread thread2 = new Thread(new ThreadStart(AsynchronProcess2));
 thread2.Start();
Функция AsynchronProcess1

показывает, что: 

Ответ:

 (1) из процесса первого обратившегося к файлу делать можно все, даже при установленной блокировке. Перед окончанием процесса он приостанавливается, но блокировка для файла остается до выполнения большей части процесса 2  

 (2) из процесса первого обратившегося к файлу делать можно все, даже при установленной блокировке. Перед окончанием процесса он приостанавливается, но блокировка для файла остается до выполнения большей части процесса 1  

 (3) из процесса первого обратившегося к файлу делать можно все, блокировка для файла остается в течение выполнения всего процесса 2  


Упражнение 4:
Номер 1
Внесем в файл C:\a.txt числа 0123456789, выполним следующий код:
                  
private void button1_Click(object sender, System.EventArgs e)
{
//Файл создан заранее, его объем должен быть достаточно большим
 string path = "C:\a.txt";
 using(FileStream  
      fileStream = new FileStream(path, FileMode.Open))
 {
  fileStream.Seek(1, SeekOrigin.Begin);
    
for (int i=0;i<fileStream.Length;i++)
      textBox1.Text=fileStream.ReadByte()+" ";
  }
Результат в TextBox:
        

Ответ:

 (1) 495051525354555657-1  

 (2) 495051525354555657+1  

 (3) данные не будут выведены вообще  


Номер 2
Внесем в файл C:\a.txt числа 0123456789, выполним следующий код:

private void button1_Click(object sender, System.EventArgs e)
{
//Файл создан заранее его объем должен быть достаточно большим
 string path = "C:\a.txt";
FileInfo fileinfo=new FileInfo(path); 
 using(FileStream  
     fileStream = fileinfo.OpenWrite())
 {
  fileStream.Seek(0, SeekOrigin.Begin);        
  byte[] bArray=new byte[10];
  Random numrandom = new Random();
  for(int i=0; i <bArray.Length; i++)
  {
   //Записываем случайные числа в массив
   bArray[i]=(byte)numrandom.Next(48,57);
   fileStream.WriteByte(bArray[i]);
   textBox1.Text+=bArray[i];
  }				
 }
}

полный результат выполнения кода: 

Ответ:

 (1) в файле: 7664734068  

 (2) в файле: 7664734068; в контроле: 55545452555152485456  

 (3) в контроле: 55545452555152485456  


Номер 3
Внесем в файл C:\a.txt числа 0123456789, выполним следующий код:

private void button1_Click(object sender, System.EventArgs e)
{  
 //Файл создан заранее его объем должен быть достаточно большим
string path = "C:\a.txt";
 FileInfo fileinfo=new FileInfo(path); 
 using(FileStream  
 fileStream = fileinfo.OpenRead())
 {
  fileStream.Seek(0, SeekOrigin.Begin);
  byte[] bArray=new byte[10];
    int iBytes=fileStream.Read(bArray,0,10);
    if(iBytes == 10)
  {
   for(int i=0; i < iBytes; i++)
   textBox1.Text+= bArray[i];
  }
}						

Результат: 

Ответ:

 (1) 48495051525354555657  

 (2) 48495051525354555657+1  

 (3) данные не будут выведены вообще  


Упражнение 5:
Номер 1
Следующий код:

Imports System
Imports System.IO
Module VBDemo
 Sub Main()
  Dim Bytes() As Byte = New Byte(10) {}
  Dim I As Integer
  Dim MemStr As New MemoryStream()
Dim FileStr As New FileStream(“c:\temp\bytes.bin”, _
   FileMode.CreateNew)
  Dim Rand As System.Random = New System.Random()
  For I = 0 To 9
   Bytes(I) = Rand.Next(0, 100)
  Next
  MemStr.Write(Bytes, 0, I)
  MemStr.WriteTo(FileStr)
  MemStr.Close()
  FileStr.Close()
 End Sub
End Module

демонстрирует:

Ответ:

 (1) использование класса MemoryStream для создания нового потока в памяти  

 (2) использование класса MemoryStream для задания содержимого потока  

 (3) использование класса MemoryStream для сохранения потока в файле  


Номер 2
В следующем фрагменте кода: 

using System.Xml.Serialization;
...
XmlSerializer serializer = new XmlSerializer(typeof(OrderEntity));
TextWriter writer = new StreamWriter("MyXmlOrderEntity.xml");
serializer.Serialize(writer, order);
writer.Close();

показывается: 

Ответ:

 (1) как использовать класс XmlSerializer для сериализации объекта OrderEntity в XML  

 (2) как использовать класс StreamWriter для записи содержимого потока  

 (3) как использовать класс StreamWriter для сохранения потока в файле  


Номер 3
Следующий фрагмент кода: 
       
  <OrderID>10248</OrderID>
  <CustomerID>VINET</CustomerID>
  <OrderDate>1996-07-04T00:00:00.0000000+01:00</OrderDate>
  <OrderDetails> ... see below ... </OrderDetails>
  <ShippedDate>1996-07-16T00:00:00.0000000+01:00</ShippedDate>
</OrderEntity>

иллюстрирует следующие правила XML-сериализации: 

Ответ:

 (1) имя корневого элемента XML-документа совпадает с именем класса, OrderEntity  

 (2) каждое открытое свойство объекта OrderEntity сериализуется в элемент с тем же именем  

 (3) каждое открытое поле объекта OrderEntity сериализуется в элемент с тем же именем  


Упражнение 6:
Номер 1
Какое из определений более полное:
        

Ответ:

 (1) класс BinaryFormatter сериализует и десериализует объект или полный граф связанных объектов в двоичном формате  

 (2) класс BinaryFormatter сериализует объект или полный граф связанных объектов в двоичном формате  

 (3) класс BinaryFormatter сериализует и десериализует объект или полный граф связанных объектов в SOAP-формате  


Номер 2
Какое из определений более полное:
        

Ответ:

 (1) метод Finalize, члена BinaryFormatter, позволяет объекту Object попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как объект Object будет утилизирован в процессе сборки мусора  

 (2) метод Finalize, члена BinaryFormatter, позволяет объекту Object попытаться освободить ресурсы, перед тем как объект Object будет утилизирован в процессе сборки мусора  

 (3) метод Finalize, члена BinaryFormatter, позволяет объекту Object выполнить другие операции очистки, перед тем как объект Object будет утилизирован в процессе сборки мусора  


Номер 3
Какое из определений более полное:
        

Ответ:

 (1) свойство SurrogateSelector возвращает или задает ISurrogateSelector, управляющий подстановкой типа при сериализации и десериализации  

 (2) свойство SurrogateSelector возвращает ISurrogateSelector, управляющий подстановкой типа при сериализации  

 (3) свойство SurrogateSelector возвращает или задает ISurrogateSelector, управляющий подстановкой типа при десериализации  


Упражнение 7:
Номер 1
Какое из утверждений верно: 
        

Ответ:

 (1) метод SpecialSettingAttribute не может быть наследован  

 (2) метод SpecialSettingAttribute может быть наследован  

 (3) метод SpecialSettingAttribute может быть наследован независимо от реализации  


Номер 2
Какое из утверждений верно: 
        

Ответ:

 (1) метод SpecialSettingAttribute может быть применен к классу параметров или к индивидуальному свойству параметров  

 (2) метод SpecialSettingAttribute может быть применено только к классу параметров  

 (3) метод SpecialSettingAttribute может быть применено только к индивидуальному свойству параметров  


Номер 3
Какое из утверждений верно:

Ответ:

 (1) класс StringReader служит для чтения символов из строк  

 (2) класс StreamReader применяется для чтения последовательности символов из указанного файла  

 (3) класс StreamReader применяется для чтения последовательности символов другого потока  


Упражнение 8:
Номер 1
Следующий код:
    
using System.Runtime.Serialization;
...
[Serializable]
public class OrderEntity : ISerializable
{
  void ISerializable.GetObjectData(SerializationInfo info, StreamingContext
ctxt)
  {
    info.AddValue("OrderID", orderID);
  }
deserialization
  public OrderEntity(SerializationInfo info, StreamingContext ctxt)
  {
    orderID = (int)info.GetValue("OrderID", typeof(int));
  }
  
демонстрирует:

Ответ:

 (1) пример организации конструктора десериализации, вызываемый классом SoapFormatter при десериализации  

 (2) пример организации конструктора сериализации, вызываемый классом SoapFormatter при сериализации  

 (3) пример вызова функции сериализации классом SoapFormatter при сериализации  


Номер 2
В следующем примере кода:
using System.Runtime.Serialization.Formatters.Soap; 
SoapFormatter formatter = new SoapFormatter();
FileStream stream = File.Create("MySoapOrderEntity.xml");
formatter.Serialize(stream, order);
stream.Close();

демонстрируется:
        

Ответ:

 (1) применение класса SoapFormatter для сериализации объекта OrderEntity в SOAP-формат  

 (2) неявное выполнение SOAP-сериализации при использовании протокола SOAP для приема или передачи объекта Web-сервисом XML  

 (3) неявное выполнение SOAP-сериализации при использовании канала удаленного взаимодействия по протоколу HTTP для приема или передачи объекта сервером Remoting  


Номер 3
В следующем примере кода:
        using System.Runtime.Serialization.Formatters.Soap; 
...
FileStream stream = File.Create("MySoapOrderEntity.xml");
formatter.Serialize(stream, order);
stream.Close();

демонстрируется:

Ответ:

 (1) SOAP-форматирование при работе с каналом удаленного взаимодействия по протоколу TCP  

 (2) создание объекта SoapFormatter, используемого для сериализации объектов типа OrderEntity  

 (3) сериализация объекта OrderEntity в SOAP-файл (XML-файл)  


Упражнение 13:
Номер 1
Рассмотрим следующий фрагмент кода:

private void button1_Click(object sender, System.EventArgs e)
{
 string path = @"C:\a.txt";
using(FileStream filestream=File.Open(path, FileMode.OpenOrCreate))
 {
  BinaryWriter binarywriter = new BinaryWriter(filestream);
  decimal dNum=20.3m;
  binarywriter.Write(dNum);
  dNum=723.05m;
  binarywriter.Write(dNum);
  dNum=3000.105m;
  binarywriter.Write(dNum);
 }
using(FileStream filestream=File.Open(path, FileMode.Open))
 {
  BinaryReader binaryreader = new BinaryReader(filestream);
  decimal dNum;
  filestream.Seek(16,SeekOrigin.Begin);
  textBox1.Text+=binaryreader.ReadDecimal().ToString()+" ";
  filestream.Seek(32,SeekOrigin.Begin);
  textBox1.Text+=binaryreader.ReadDecimal().ToString()+" ";
  filestream.Seek(0,SeekOrigin.Begin);
  textBox1.Text+=binaryreader.ReadDecimal().ToString()+" ";
 }
}

Результат в TextBox:

Ответ:

 (1) 723,05 3000,105 20,3  

 (2) 723,05  

 (3) 3000,105  


Номер 2
При выполнении конструктора класса public StringReader(string str):
    
string sText="съешь"+Environment.NewLine+"этих"+Environment.NewLine+
             "сладких"+Environment.NewLine+"булочек"+Environment.NewLine;
 string strLine= null;
StringReader stringreader = new StringReader(sText);
while(true)
{
 strLine = stringreader.ReadLine();
 if(strLine != null)
 {
  textBox1.Text+=strLine+"\r\n";
 }
 else
 {					
  break;
 }
}

получим результат:
        

Ответ:

 (1) съешь этих сладких булочек  

 (2) булочек сладких этих съешь  

 (3) булочек этих сладких съешь  


Номер 3
Рассмотрим код:

private void button1_Click(object sender, System.EventArgs e)
{
 StringBuilder sbText= new StringBuilder("Дом, который построит Джек");
 StringBuilder sbText1= new StringBuilder("Пшеница, которая в темном чулане хранилась");
 StringBuilder sbText2= new StringBuilder("Кот, который пугал синицу");
  StringWriter stringwriter = new StringWriter();      
 sbText=sbText.Replace("построит","построил");
 sbText1=sbText1.Replace("хранилась","хранится");
 sbText2=sbText2.Replace("пугал","пугает");
 stringwriter.Write(sbText);
 stringwriter.Write(stringwriter.NewLine);
 stringwriter.Write(sbText1);			
 stringwriter.GetStringBuilder().Insert(sbText.Length+1,sbText2);
 string path = @"C:\a.txt";
using(TextWriter streamWriter = new StreamWriter(path,true,System.Text.Encoding.Default))
 {
  streamWriter.Write(stringwriter);
 }
 stringwriter.Close();
 using(TextReader streamreader = new StreamReader(path,System.Text.Encoding.Default))
 {
  StringReader stringreader = new StringReader(streamreader.ReadToEnd());
  textBox1.Text+=stringreader.ReadLine()+"\r\n";
  textBox1.Text+=stringreader.ReadLine()+"\r\n";
  sbText=new StringBuilder(stringreader.ReadLine());
  sbText=sbText.Replace("Кот", "Пес",0,5);
  textBox1.Text+=sbText;
  stringreader.Close();
 }
}

Результатом выполнения будет:

Ответ:

 (1) Текст в файле: Дом, который построил Джек Пшеница, которая в темном чулане хранится Кот, который пугает синицу Текст в контроле TextBox: Дом, который построил Джек Пшеница, которая в темном чулане хранится Пес, который пугает синицу  

 (2) Текст в файле: Дом, который построил Джек Пшеница, которая в темном чулане хранится Кот, который пугает синицу Текст в контроле TextBox: Дом, который построил Джек Пшеница, которая в темном чулане хранится Кот, который пугает синицу  

 (3) Текст в файле: Дом, который построил Джек Пшеница, которая в темном чулане хранится Пес, который пугает синицу Текст в контроле TextBox: Дом, который построил Джек Пшеница, которая в темном чулане хранится Кот, который пугает синицу  


Упражнение 9:
Номер 1
Код:
    
FileStream sourceFile = File.OpenRead(@"C:\zip.xml"); 
FileStream destFile = File.Create(@"C:\zip.zip"); 
 GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress); 
 try 
{ 
    int value = sourceFile.ReadByte(); 
        while (value!= -1) 
        { 
            compStream.WriteByte((byte)value); 
                value = sourceFile.ReadByte(); 
        } 
} 
finally 
{ 
    compStream.Dispose(); 
}

демонстрирует

Ответ:

 (1) пример архивирования файла  

 (2) пример разархивирования файла  

 (3) пример восстановления файла  


Номер 2
Фрагмент кода:
    
using System;  
using System.IO;  
using System.IO.Compression; 
namespace Recipe05_23  
{  
class Recipe05_23  
{  
static void Main(string[] args)  
{  
 GZipStream zipout = new GZipStream(  
File.OpenWrite("compressed_data.gzip"),  
CompressionMode.Compress);  
StreamWriter writer = new StreamWriter(zipout);  
writer.WriteLine("the quick brown fox");  
 writer.Close();  
GZipStream zipin = new GZipStream(  
File.OpenRead("compressed_data.gzip"),  
CompressionMode.Decompress);  
StreamReader reader = new StreamReader(zipin);  
a line from the stream and print it out.  
Console.WriteLine(reader.ReadLine());  
Console.WriteLine(Environment.NewLine);  
Console.WriteLine("Main method complete. Press Enter."); 
Console.ReadLine(); 
} 
} 
}

демонстрирует пример:
    

Ответ:

 (1) сжатия данных  

 (2) извлечения данных  

 (3) запись и чтение данных разных типов  


Номер 3
Фрагмент кода:
    
using System.Runtime.Serialization;
...
[Serializable]
public class OrderEntity : ISerializable
{
  void ISerializable.GetObjectData(SerializationInfo info, StreamingContext
ctxt)
  {
    info.AddValue("OrderID", orderID);
  }
deserialization
  public OrderEntity(SerializationInfo info, StreamingContext ctxt)
  {
        orderID = (int)info.GetValue("OrderID", typeof(int));
  }
}
    
демонстрирует пример:
    

Ответ:

 (1) настройки SOAP-формата, используемого при сериализации  

 (2) реализации в классе бизнес-компонента интерфейс ISerializable  

 (3) использования специального конструктора, вызываемый объектом SoapFormatter для воссоздания объекта при десериализации  


Упражнение 10:
Номер 1
Фрагмента кода:
    using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
class SocketServer
{
public static void Main()
{
StreamWriter streamWriter;
StreamReader streamReader;
NetworkStream networkStream;
TcpListener tcpListener = new TcpListener(5555);
tcpListener.Start();
Console.WriteLine("The Server has started on port 5555");
Socket serverSocket = tcpListener.AcceptSocket();
try
{
if (serverSocket.Connected)
{
while (true)
{
Console.WriteLine("Client connected");
networkStream = new NetworkStream(serverSocket);
streamWriter = new StreamWriter(networkStream);
streamReader = new StreamReader(networkStream);
Console.WriteLine(streamReader.ReadLine());
}
}
if (serverSocket.Connected)
serverSocket.Close();
Console.Read();
}
catch (SocketException ex)
{
Console.WriteLine(ex);
}
}
}
    
демонстрирует, что:
    

Ответ:

 (1) приложение сервер стартует на порте 5555  

 (2) приложение сервер отображает соответствующее сообщение  

 (3) приложение сервер ждет входящего запроса на подсоединение от Клиента  


Номер 2
Фрагмента кода:
    using System.Runtime.Serialization.Formatters.Binary;
...
BinaryFormatter formatter = new BinaryFormatter();
"MyBinaryOrderEntity.dat"
FileStream stream = File.Create("MyBinaryOrderEntity.dat");
formatter.Serialize(stream, order);
stream.Close();

демонстрирует:

Ответ:

 (1) применение класса BinaryFormatter для сериализации объекта OrderEntity в двоичный формат  

 (2) неявное выполнение двоичной сериализации при использовании канала удаленного взаимодействия по протоколу TCP для приема или передачи объекта сервером Remoting  

 (3) явное выполнение двоичной сериализации при использовании канала удаленного взаимодействия по протоколу TCP для приема или передачи объекта сервером Remoting  


Номер 3
Фрагмент кода:

Imports System 
Imports System.IO 
Imports System.Security.Cryptography 
Module VBDemo 
Sub Main() 
    Dim Bytes() As Byte = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74} 
    Dim EncBytes() As Byte = New Byte(15) {} 
    Dim DecBytes() As Byte = New Byte(10) {} 
    Dim FileName As String = "c:\temp\text.enc" 
    Dim EncFile As New FileStream(FileName, FileMode.Create, _ 
        FileAccess.Write) 
    Dim DES As New DESCryptoServiceProvider() 
    Dim DESEncrypt As ICryptoTransform = DES.CreateEncryptor() 
    Dim CryptoStreamEnc As New CryptoStream(EncFile, DESEncrypt, _ 
        CryptoStreamMode.Write) 
    Console.WriteLine("Original Data") 
    ToHexArray(Bytes) 
    CryptoStreamEnc.Write(Bytes, 0, Bytes.Length) 
    CryptoStreamEnc.Close() 
    EncFile.Close() 
    EncFile = New FileStream(FileName, FileMode.Open, FileAccess.Read) 
    EncFile.Read(EncBytes, 0, EncFile.Length) 
    EncFile.Close() 
    Console.WriteLine("Encrypted Data") 
    ToHexArray(EncBytes) 
    Console.WriteLine() 
    Dim DecFile As New FileStream(FileName, FileMode.Open, _ 
        FileAccess.Read) 
    Dim DESDecrypt As ICryptoTransform = DES.CreateDecryptor() 
    Dim CryptoStreamDec As New CryptoStream(DecFile, DESDecrypt, _ 
        CryptoStreamMode.Read) 
    Dim Reader As New BinaryReader(CryptoStreamDec) 
    Console.WriteLine("Decrypted Data") 
    DecBytes = Reader.ReadBytes(10) 
    ToHexArray(DecBytes) 
End Sub 

Sub ToHexArray(ByVal A As Byte()) 
    Dim I As Integer 
    For I = 0 To A.GetUpperBound(0) 
        Console.Write("0x{0:x2} ", A(I)) 
        If I = 7 Then 
            Console.WriteLine() 
        End If 
    Next 
End Sub 
End Module

показано: 

Ответ:

 (1) как зашифровать массив байтов  

 (2) как сохранить массив байтов в файле, а затем расшифровать на основе алгоритма DES  

 (3) как использовать конструктор по умолчанию, который заполняет необходимые параметры выбранного нами алгоритма  


Упражнение 11:
Номер 1
Следующий пример: 

Imports System
Imports System.IO
Module VBDemo
Sub Main()
    Dim Bytes As Byte()
    Dim I As Integer
    Dim Reader As BinaryReader
    Reader = New BinaryReader(File.OpenRead (“c:\demo.exe”))
    While Reader.PeekChar() > -1
        Bytes = Reader.ReadBytes(16)
        For I = 0 To Bytes.GetUpperBound(0)
            Console.Write(“0x{0:X2}|”, Bytes(I))
        Next
        Console.WriteLine()
    End While
End Sub
End Module 

показывает:

Ответ:

 (1) как использовать класс BinaryReader для создания простой утилиты шестнадцатеричного дампа  

 (2) как использовать класс BinaryWrite для создания простой утилиты шестнадцатеричного дампа  

 (3) как использовать класс BinaryReader для создания простой утилиты восьмеричного дампа  


Номер 2
 Следующий пример:
Imports System
Imports System.IO
Module VBDemo
Sub Main()
    Dim Bytes As Byte()
    Dim Reader As BinaryReader
    Dim Writer As BinaryWriter
    Reader = New BinaryReader(File.OpenRead (“c:\demo.exe”))
    Writer = New BinaryWriter(File.Create (“c:\demo_copy.exe”))
    While Reader.PeekChar() > -1
        Bytes = Reader.ReadBytes(1024)
        Writer.Write(Bytes)
    End While
    Reader.Close()
    Writer.Flush()
    Writer.Close()
End Sub
End Module
 
демонстрирует:

Ответ:

 (1) использование класса BinaryWriter для записи данных примитивных типов в ассоциированный поток  

 (2) объединение методов классов BinaryReader и BinaryWriter  

 (3) выполнение операции копирования  


Номер 3
Следующий пример:
Imports System
Imports System.IO
Module VBDemo
Sub Main()
    Dim FileName As String = _
         “C:\Program Files\Microsoft.NET\FrameworkSDK\include\corsym.h”
    Dim Reader As TextReader
    Dim I As Int32
    Reader = New StreamReader(FileName)
    While Reader.Peek() > -1
        Console.WriteLine(Reader.ReadLine)
        I += 1
    End While
    Console.WriteLine(“Read {0:G} lines”, I)
    Reader.Close()
End Sub
End Module

показано:

Ответ:

 (1) как использовать класс StreamReader, чтобы прочитать текстовый файл построчно и как одну строку  

 (2) как использовать класс TextReader, чтобы прочитать текстовый файл построчно и как одну строку  

 (3) как использовать класс StringReader, чтобы прочитать текстовый файл построчно и как одну строку  


Упражнение 12:
Номер 1
 Если нас не интересует число строк, которые мы должны прочитать, и мы знаем, что объем файла не очень велик, мы можем использовать:

Ответ:

 (1) метод ReadToEnd  

 (2) метод Read  

 (3) метод ReadByte  


Номер 2
Класс StringWriter используется для записи строки, которая хранится:
        

Ответ:

 (1) в классе StringBuilder, реализованном в пространстве имен System.Text  

 (2) в классе StringReader, реализованном в пространстве имен System.Text  

 (3) в классе StringWriter, реализованном в пространстве имен System.Text  


Номер 3
 Какое из утверждений верно:
        

Ответ:

 (1) свойство AutoFlush служит для указания, следует ли записывать содержимое буфера в поток после каждого вызова методов Write и WriteLine  

 (2) свойство AutoFlush служит для указания, следует ли записывать содержимое буфера в поток после каждого вызова метода Write  

 (3) свойство AutoFlush служит для указания, следует ли записывать содержимое буфера в поток после каждого вызова метода WriteLine  




Главная / Программирование / Практикум прикладного программирования на C# в среде VS.NET 2008 / Тест 19