¿Alguien me puede explicar que estoy haciendo mal?
He usado los breakpoints y parece que todo está en orden, pero siempre obtengo un archivo de 0 Bytes.
PD: No hay errores/excepciones, nada extraño y me aseguro de cerrar el flujo para que los datos se escriban, pero parece que no se escriben.
Imports System.IO
Public Class Form1
Dim input_filepath As String = "C:\Test.txt"
Dim output_filepath As String = "C:\Test_New.txt"
Dim input As New FileStream(input_filepath, FileMode.Open, FileAccess.ReadWrite)
Dim output As New FileStream(output_filepath, FileMode.Create, FileAccess.ReadWrite)
Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
CopyStream(input, output)
' For Testing:
'If New IO.FileInfo(output_filepath).Length = 0 Then IO.File.Delete(output_filepath) : Application.Exit() Else Process.Start("Notepad", output_filepath)
End Sub
Public Sub CopyStream(ByVal inputStream As Stream, ByVal outputStream As Stream)
Dim buffer = New Byte(1025) {}
Dim bytesRead As Integer = 0
While (bytesRead = inputStream.Read(buffer, 0, buffer.Length)) > 0
outputStream.Write(buffer, 0, bytesRead)
End While
inputStream.Flush() : outputStream.Flush()
inputStream.Close() : outputStream.Close()
End Sub
End Class
Este es la conversión del código de arriba que una persona me ha proporcionado convertido a C#, este código funciona perféctamente a diferencia del de arriba, no entiendo porque, y es lo que estoy tratando de averiguar:
using System;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
CopyMyFiles();
Console.WriteLine("DONE!");
Console.ReadLine();
}
private static void CopyMyFiles()
{
string input_filepath = "Test.txt";
string output_filepath = "Test_New.txt";
var input
= new System.IO.FileStream(input_filepath, FileMode
.Open, FileAccess
.ReadWrite); var output
= new System.IO.FileStream(output_filepath, FileMode
.Create, FileAccess
.ReadWrite);
CopyStream(input, output);
}
public static void CopyStream(Stream inputStream, Stream outputStream)
{
byte[] buffer
= new byte[1025]; int bytesRead = 0;
while ((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) > 0)
{
outputStream.Write(buffer, 0, bytesRead);
}
outputStream.Flush();
inputStream.Close();
outputStream.Close();
}
}
}