Как отправить XML-файл со смарт-устройства на ПК в C#?

Я занимаюсь разработкой веб-приложения для портативного считывателя RFID (windows CE) и пытаюсь отправить файл XML из считывателя RFID в беспроводную сеть ноутбука или GPRS. Код работает правильно с "приложением формы Windows" в MS Visual Studio, но когда я пытаюсь использовать его с "приложением смарт-устройства", он не работает... появляется ошибка для метода "ReadAllBytes":

System.IO.File dose not contain a definition for ReadAllBytes

Пожалуйста, помогите мне справиться с этой ошибкой. Благодарю.


Код:

private void button1_Click(object sender, EventArgs e)
{
try
{

string IpAddressString = "10.1.1.104";

IPEndPoint ipEnd_client = new
IPEndPoint(IPAddress.Parse(IpAddressString), 5656);

Socket clientSock_client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.IP);

string fileName = "student.XML";
string filePath =@"My Device\";

fileName = fileName.Replace("\\", "/");
while (fileName.IndexOf("/") > -1)
{

filePath += fileName.Substring(0, fileName.IndexOf("/") + 1);

fileName = fileName.Substring(fileName.IndexOf("/") + 1);
}

byte[] fileNameByte = Encoding.UTF8.GetBytes(fileName);
if (fileNameByte.Length > 5000 * 1024)
{
curMsg_client = "File size is more than 5Mb,
please try with small file.";
MessageBox.Show("File size is more than 5Mb,
please try with small file.");
return;
}

MessageBox.Show("Buffering ...");

string fullPath = filePath + fileName;
byte[] fileData =File.ReadAllBytes(fullPath);

byte[] clientData = new byte[4 + fileNameByte.Length +
fileData.Length];

//byte[] clientData = new byte[4 + fileNameByte.Length];

byte[] fileNameLen = BitConverter.GetBytes(fileNameByte.Length);

fileNameLen.CopyTo(clientData, 0);
fileNameByte.CopyTo(clientData, 4);

fileData.CopyTo(clientData, 4 + fileNameByte.Length);

MessageBox.Show("Connection to server ...");
clientSock_client.Connect(ipEnd_client);

MessageBox.Show("File sending...");

clientSock_client.Send(clientData, 0, clientData.Length, 0);

MessageBox.Show("Disconnecting...");
clientSock_client.Close();

MessageBox.Show ("File [" + fullPath + "] transferred.");

}
catch (Exception ex)
{
if (ex.Message == "No connection could be made
because the target machine actively refused it")
{

MessageBox.Show ("File Sending fail. Because
server not running.");
}
else
{

MessageBox.Show ("File Sending fail." +
ex.Message.ToString());
}
}
}

1 ответ

Это потому, что, как говорится в сообщении об ошибке, ReadAllBytes не существует в Compact Framework. Вы должны использовать перегрузку Read, чтобы получить данные.

Что-то вроде этого:

using (var reader = File.OpenRead(filePath))
{
    var fileData = new byte[reader.Length];
    reader.Read(fileData, 0, fileData.Length);
}
Другие вопросы по тегам