Solved

Convert C# code for concatenating files to VB

Posted on 2004-08-11
6
228 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 10

Accepted Solution

by:
Clif earned 150 total points
ID: 11773648
How about:

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

Assisted Solution

by:mdamico
mdamico earned 100 total points
ID: 11773821
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
ID: 11774275
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
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 10

Expert Comment

by:Clif
ID: 11774394
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
ID: 11774984
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
ID: 11775072
Glad to be of service.  :)
0

Featured Post

Salesforce Has Never Been Easier

Improve and reinforce salesforce training & adoption using WalkMe's digital adoption platform. Start saving on costly employee training by creating fast intuitive Walk-Thrus for Salesforce. Claim your Free Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Well, all of us have seen the multiple EXCEL.EXE's in task manager that won't die even if you call the .close, .dispose methods. Try this method to kill any excels in memory. You can copy the kill function to create a check function and replace the …
Article by: Kraeven
Introduction Remote Share is a simple remote sharing tool, enabling you to see, add and remove remote or local shares. The application is written in VB.NET targeting the .NET framework 2.0. The source code and the compiled programs have been in…
In this video, viewers are given an introduction to using the Windows 10 Snipping Tool, how to quickly locate it when it's needed and also how make it always available with a single click of a mouse button, by pinning it to the Desktop Task Bar. Int…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…

690 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