Solved

Convert C# code for concatenating files to VB

Posted on 2004-08-11
6
223 Views
Last Modified: 2012-06-27
VB.NET newbie question.....

I am trying to convert the following C# code from a similar Q&A to VB to combine multiple files together but ended up creating a large continuously growing file.

=================================
ORIGINAL C# CODE
=================================
FileStream file1  = File.OpenRead(textBox1.Text);
FileStream file2  = File.OpenRead(textBox2.Text);
FileStream output = File.OpenWrite("output.file");

int fileByte;
while((fileByte = file1.ReadByte()) != -1)
{
     output.WriteByte((byte)fileByte);              
}

while((fileByte = file2.ReadByte()) != -1)
{
     output.WriteByte((byte)fileByte);              
}

file1.Close();
file2.Close();
output.Close();

=================================
COVERTED VB CODE
=================================
        Dim file1 As New FileStream("c:\temp\ini_files\ini_part_1.txt", FileMode.Open)
        Dim file2 As New FileStream("c:\temp\ini_files\ini_part_2.txt", FileMode.Open)
        Dim fileOutput As New FileStream("c:\temp\ini_files\ini_part_3.txt", FileMode.CreateNew)

        Dim fileByte As Integer

        While ((fileByte = file1.ReadByte()) <> -1)
            fileOutput.WriteByte((byte)fileByte)
        End While

        While ((fileByte = file2.ReadByte()) <> -1)
            fileOutput.WriteByte((byte)fileByte)
        End While

        file1.Close()
        file2.Close()
        fileOutput.Close()
=================================

I'm mainly unsure how to covert the line:

fileOutput.WriteByte((byte)fileByte)

I received "'byte' is a type, and so is not a valid expression" from Visual Studio.

Detailed code or general pointers would be most appreciated.

Thank you
0
Comment
Question by:GCaron
  • 3
  • 2
6 Comments
 
LVL 10

Accepted Solution

by:
Clif earned 150 total points
Comment Utility
How about:

fileOutput.WriteByte(CType(fileByte, Byte))
0
 
LVL 7

Assisted Solution

by:mdamico
mdamico earned 100 total points
Comment Utility
In case you aren't aware of these, there are a couple online sites that do C# to VB.Net conversions.  

http://www.developerfusion.com/utilities/convertcsharptovb.aspx

http://authors.aspalliance.com/aldotnet/examples/translate.aspx
0
 

Author Comment

by:GCaron
Comment Utility
I split the points as you both answered my main question although I am still generating a continous file.

I am now using the following code after changing some lines due to the suggestions and conversions:

================================================================
        Dim file1 As FileStream = file.OpenRead("c:\temp\ini_files\ini_part_1.txt")
        Dim file2 As FileStream = file.OpenRead("c:\temp\ini_files\ini_part_2.txt")
        Dim fileOutput As FileStream = file.OpenWrite("c:\temp\ini_files\ini_part_3.txt")
        Dim fileByte As Integer

        While Not ((fileByte = file1.ReadByte()) = -1)
            fileOutput.WriteByte(CType(fileByte, Byte))
        End While

        While Not ((fileByte = file2.ReadByte()) = -1)
            fileOutput.WriteByte(CType(fileByte, Byte))
        End While

        file1.Close()
        file2.Close()
        fileOutput.Close()
================================================================

I am now receiving the error alert on the lines referencing "file.OpenRead" stating "Local variable 'file' cannot be referred to before it is declared". I know I am close but I just don't see what I am missing?

Thanks again
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 10

Expert Comment

by:Clif
Comment Utility
Go back to using:

        Dim file1 As New FileStream("c:\temp\ini_files\ini_part_1.txt", FileMode.Open)
        Dim file2 As New FileStream("c:\temp\ini_files\ini_part_2.txt", FileMode.Open)
        Dim fileOutput As New FileStream("c:\temp\ini_files\ini_part_3.txt", FileMode.CreateNew)


0
 

Author Comment

by:GCaron
Comment Utility
Thanks, the final code I used to achieve what I needed is as follows;

===============================================

        Dim fn1 As String = "c:\temp\ini_files\ini_part_1.txt"
        Dim fn2 As String = "c:\temp\ini_files\ini_part_2.txt"
        Dim fn3 As String = "c:\temp\ini_files\ini_part_3.txt"

        Dim f1 As New FileStream(fn1, FileMode.Open, FileAccess.Read, FileShare.Read)
        Dim f2 As New FileStream(fn2, FileMode.Open, FileAccess.Read, FileShare.Read)
        Dim f3 As New FileStream(fn3, FileMode.Create, FileAccess.Write, FileShare.Read)

        ' Create a reader that can read bytes from the FileStream.
        Dim sr1 As New BinaryReader(f1)
        ' While not at the end of the file, read lines from the file.
        While sr1.PeekChar() > -1
            Dim input As Byte = sr1.ReadByte()
            f3.WriteByte(CType(input, Byte))
        End While
        sr1.Close()

        ' Create a reader that can read bytes from the FileStream.
        Dim sr2 As New BinaryReader(f2)
        ' While not at the end of the file, read lines from the file.
        While sr2.PeekChar() > -1
            Dim input As Byte = sr2.ReadByte()
            f3.WriteByte(CType(input, Byte))
        End While
        sr2.Close()

        f1.Close()
        f2.Close()
        f3.Close()
===============================================

Thanks again
0
 
LVL 10

Expert Comment

by:Clif
Comment Utility
Glad to be of service.  :)
0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Suggested Solutions

If you're writing a .NET application to connect to an Access .mdb database and use pre-existing queries that require parameters, you've come to the right place! Let's say the pre-existing query(qryCust) in Access takes a Date as a parameter and l…
1.0 - Introduction Converting Visual Basic 6.0 (VB6) to Visual Basic 2008+ (VB.NET). If ever there was a subject full of murkiness and bad decisions, it is this one!   The first problem seems to be that people considering this task of converting…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now