private void btnRecover_Click(object sender, EventArgs e) { ADSIO connector = new ADSIO(); ADSFile file = connector.OpenFile(txbRecover.Text, "", ""); svfSaveFile.FileName = file.Info.name + "." + file.Info.ext; if (file.Data == null) { tslFeedBack.Text = "O arquivo não existe."; return; } if (svfSaveFile.ShowDialog() == DialogResult.OK) { try { byte[] bFile = connector.ReadFile(1, file.Info.size, file); File.WriteAllBytes(svfSaveFile.FileName, bFile); } catch (Exception ex) { Debug.WriteLine("Exception: " + ex.ToString()); tslFeedBack.Text = "Não foi recuperar o arquivo."; } finally { connector.CloseFile(file); } } }
private void btnSaveInDisk_Click(object sender, EventArgs e) { if (txbExtension.Text != "" && txbFileName.Text != "") { try { ADSIO connector = new ADSIO(); string fName = txbFileName.Text; string fExt = txbExtension.Text; ADSFile file = connector.OpenFile(fName, fExt, "File"); int writed = connector.WriteFile(this.fileBuffer, 1, fileBuffer.Length, file); Debug.WriteLine("Bytes escritos: " + writed); connector.CloseFile(file); tslFeedBack.Text = "Arquivo enviado."; } catch (Exception ex) { Debug.WriteLine("Exception: " + ex.ToString()); tslFeedBack.Text = "Erro ao enviar arquivo."; } } else { tslFeedBack.Text = "Digite valores válidos."; } }
// Le dados de arquivo // com a representação do ADSFile // Estrutura similar ao fread de C public byte[] ReadFile(int size, int count, ADSFile stream) { if (size == 0 || count == 0) { return(null); } try { if ((size * count) > stream.Info.size) { return(null); } byte[] buffer = new byte[size * count]; int i = 0; for (i = 0; i < count; i++) { Array.Copy(stream.Data, size * i, buffer, size * i, size); } return(buffer); } catch (Exception e) { Debug.WriteLine("Exception: " + e); return(null); } }
// Abre arquivo e cria um objeto // representativo para a manipulação // Estrutura similar ao fopen de C public ADSFile OpenFile(string fileName, string extension, string description) { ADSFile file; FileInfo info; if (existsFile(fileName)) { IntPtr ptr = getFileInfo(fileName); info = (FileInfo)Marshal.PtrToStructure(ptr, typeof(FileInfo)); byte[] buffer = new byte[info.size]; readFile(info.name, buffer); file = new ADSFile(info, buffer); } else { info = new FileInfo(fileName, description, extension, 0); file = new ADSFile(info, null); } return(file); }
// Envia arquivo // para disco usando a representação ADSFile // Estrutura similar ao fclose de C public bool CloseFile(ADSFile stream) { if (!stream.Equals(null)) { try { return(safeWriteFile(stream.Info.name, stream.Info.ext, 'f', stream.Info.desc, stream.Info.size, stream.Data)); } catch (Exception e) { Debug.WriteLine("Exception: " + e); return(false); } } return(false); }
// Escreve arquivo e // com a representação ADSFile // Estrutura similar ao fwrite de C public int WriteFile(byte[] data, int size, int count, ADSFile stream) { if (size == 0 || count == 0) { return(-1); } try { byte[] buffer = new byte[size * count]; int i = 0; for (i = 0; i < count; i++) { Array.Copy(data, size * i, buffer, size * i, size); } stream.Info = new FileInfo(stream.Info.name, stream.Info.desc, stream.Info.ext, size * count); stream.Data = buffer; return(i); } catch (Exception e) { Debug.WriteLine("Exception: " + e); return(-1); } }