Hi there,
I am fairly new to writing code in Java.
What I'm trying to do is to write a program which will read an input file, and then create a multiple output files, based on a control breaks (tags) in the input file. The output file names, will be derived from the control-break lines of the input file.
So far, most of my logic works.
I am having a problem (the program will not compile) writing to the output file outside of the IF construct, where the output file is defined. There is also a compilation error with closing the output file.
Here is the code:
/* 7/6/05 - Parse throught the rank and create separate RAW file for each lit. */
import java.io.*;
import java.text.*;
public class RankSeparation {
static final String IN_FILE_PATH="C:\\Art\\LitArchive\\Ranks\\";
static final String OUT_FILE_PATH="C:\\Art\\LitArchive\\Lits\\";
static final String IN_FILE_EXTENTION=".dat";
static final String OUT_FILE_EXTENTION=".dat";
/***************************************************************/
public static void main (String args[]) {
// Check for arguments - syntax: program_name input_file
if (args.length < 1)
{
System.out.println("!!! Error: No filename specified !!!\n");
System.out.println("Proper syntax is: RankSeparation raw_filename <ENTER>\n");
System.exit(0);
}
if (args.length > 1)
{
System.out.println("!!! Error: Too many parameters !!!\n");
System.out.println("Proper syntax is: RankSeparation raw_filename <ENTER>\n");
System.exit(0);
}
try
{
ProcessInputFile_function(args[0]);
}
catch (Exception exc)
{
String err = exc.toString();
System.out.println("Error in ProcessInputFile_function:" + err);
} // end try/catch
} // end main
/***************************************************************/
// Read and process every record in the input file, code from page 614
public static void ProcessInputFile_function(String sParmFileName) throws IOException {
String sInFilename="";
String sOutFilename="";
String sOutFilenameWithoutPath="";
// int sInputRecordCntr=0;
// boolean bOutputFileOpened = false;
int iCharCnt=0;
int iLitCnt=0;
String sTag="";
String sInvoiceNumber="";
String sOrderNumber="";
String sMemberFirstName="";
String sMemberLastName="";
String sMemberAddress1="";
String sMemberAddress2="";
String sMemberState="";
String sMemberCity="";
String sMemberZip="";
String sMemberPhoneDay="";
String sMemberPhoneEvening="";
sInFilename = IN_FILE_PATH+sParmFileName+IN_FILE_EXTENTION;
System.out.println("\n Input file="+sInFilename);
// Open the input file
RandomAccessFile fileIn = new RandomAccessFile(sInFilename, "r");
long lFilePointer = 0;
long lFileLength = fileIn.length();
// read all reacords in the input file
while (lFilePointer < lFileLength) {
String sInputRecord = fileIn.readLine();
lFilePointer = fileIn.getFilePointer();
sTag = sInputRecord.substring(0,6);
if (sTag.equals("<PTAD>") || sTag.equals("<ATAD>")) {
sInvoiceNumber = sInputRecord.substring(23,32);
sOrderNumber = sInputRecord.substring(6,16);
sMemberFirstName = sInputRecord.substring(33,53);
sMemberLastName = sInputRecord.substring(53,73);
sMemberAddress1 = sInputRecord.substring(73,98);
sMemberAddress2 = sInputRecord.substring(98,123);
sMemberCity = sInputRecord.substring(123,148);
sMemberState = sInputRecord.substring(148,150);
sMemberZip = sInputRecord.substring(150,159);
sMemberPhoneDay = sInputRecord.substring(159,169);
sMemberPhoneEvening = sInputRecord.substring(169,179);
sOutFilename=OUT_FILE_PATH+"inv"+sInvoiceNumber+"_"+sParmFileName+OUT_FILE_EXTENTION;
System.out.println("\n Output file="+sOutFilename);
sOutFilenameWithoutPath="inv"+sInvoiceNumber+"_"+sParmFileName+OUT_FILE_EXTENTION;
// Open the dynamically named output file here
File fileOut = new File (OUT_FILE_PATH, sOutFilenameWithoutPath);
FileOutputStream fosOut = new FileOutputStream (fileOut);
PrintStream psOut = new PrintStream(fosOut);
// xyz1 This next line works fine
psOut.println(sInputRecord);
} // end if (sTag.equals("<PTAD>") || sTag.equals("<ATAD>"))
// write the data to individual lit files here
// xyz2 This line gives me compilation error
psOut.println(sInputRecord);
} // end while
// Close the input file
fileIn.close();
// Close the output file
// xyz3 This line gives me a compilation error as well
fOut.close();
} // end ProcessInputFile_function
} // end of class
Here are the compilation errors:
C:\art\web\java\Programs\RankSeparation>javac RankSeparation.java
RankSeparation.java:113: cannot resolve symbol
symbol : variable psOut
location: class RankSeparation
psOut.println(sInputRecord);
^
RankSeparation.java:122: cannot resolve symbol
symbol : variable fOut
location: class RankSeparation
fOut.close();
^
2 errors
Any pointers will be greatly appreciated.
I am fairly new to writing code in Java.
What I'm trying to do is to write a program which will read an input file, and then create a multiple output files, based on a control breaks (tags) in the input file. The output file names, will be derived from the control-break lines of the input file.
So far, most of my logic works.
I am having a problem (the program will not compile) writing to the output file outside of the IF construct, where the output file is defined. There is also a compilation error with closing the output file.
Here is the code:
/* 7/6/05 - Parse throught the rank and create separate RAW file for each lit. */
import java.io.*;
import java.text.*;
public class RankSeparation {
static final String IN_FILE_PATH="C:\\Art\\LitArchive\\Ranks\\";
static final String OUT_FILE_PATH="C:\\Art\\LitArchive\\Lits\\";
static final String IN_FILE_EXTENTION=".dat";
static final String OUT_FILE_EXTENTION=".dat";
/***************************************************************/
public static void main (String args[]) {
// Check for arguments - syntax: program_name input_file
if (args.length < 1)
{
System.out.println("!!! Error: No filename specified !!!\n");
System.out.println("Proper syntax is: RankSeparation raw_filename <ENTER>\n");
System.exit(0);
}
if (args.length > 1)
{
System.out.println("!!! Error: Too many parameters !!!\n");
System.out.println("Proper syntax is: RankSeparation raw_filename <ENTER>\n");
System.exit(0);
}
try
{
ProcessInputFile_function(args[0]);
}
catch (Exception exc)
{
String err = exc.toString();
System.out.println("Error in ProcessInputFile_function:" + err);
} // end try/catch
} // end main
/***************************************************************/
// Read and process every record in the input file, code from page 614
public static void ProcessInputFile_function(String sParmFileName) throws IOException {
String sInFilename="";
String sOutFilename="";
String sOutFilenameWithoutPath="";
// int sInputRecordCntr=0;
// boolean bOutputFileOpened = false;
int iCharCnt=0;
int iLitCnt=0;
String sTag="";
String sInvoiceNumber="";
String sOrderNumber="";
String sMemberFirstName="";
String sMemberLastName="";
String sMemberAddress1="";
String sMemberAddress2="";
String sMemberState="";
String sMemberCity="";
String sMemberZip="";
String sMemberPhoneDay="";
String sMemberPhoneEvening="";
sInFilename = IN_FILE_PATH+sParmFileName+IN_FILE_EXTENTION;
System.out.println("\n Input file="+sInFilename);
// Open the input file
RandomAccessFile fileIn = new RandomAccessFile(sInFilename, "r");
long lFilePointer = 0;
long lFileLength = fileIn.length();
// read all reacords in the input file
while (lFilePointer < lFileLength) {
String sInputRecord = fileIn.readLine();
lFilePointer = fileIn.getFilePointer();
sTag = sInputRecord.substring(0,6);
if (sTag.equals("<PTAD>") || sTag.equals("<ATAD>")) {
sInvoiceNumber = sInputRecord.substring(23,32);
sOrderNumber = sInputRecord.substring(6,16);
sMemberFirstName = sInputRecord.substring(33,53);
sMemberLastName = sInputRecord.substring(53,73);
sMemberAddress1 = sInputRecord.substring(73,98);
sMemberAddress2 = sInputRecord.substring(98,123);
sMemberCity = sInputRecord.substring(123,148);
sMemberState = sInputRecord.substring(148,150);
sMemberZip = sInputRecord.substring(150,159);
sMemberPhoneDay = sInputRecord.substring(159,169);
sMemberPhoneEvening = sInputRecord.substring(169,179);
sOutFilename=OUT_FILE_PATH+"inv"+sInvoiceNumber+"_"+sParmFileName+OUT_FILE_EXTENTION;
System.out.println("\n Output file="+sOutFilename);
sOutFilenameWithoutPath="inv"+sInvoiceNumber+"_"+sParmFileName+OUT_FILE_EXTENTION;
// Open the dynamically named output file here
File fileOut = new File (OUT_FILE_PATH, sOutFilenameWithoutPath);
FileOutputStream fosOut = new FileOutputStream (fileOut);
PrintStream psOut = new PrintStream(fosOut);
// xyz1 This next line works fine
psOut.println(sInputRecord);
} // end if (sTag.equals("<PTAD>") || sTag.equals("<ATAD>"))
// write the data to individual lit files here
// xyz2 This line gives me compilation error
psOut.println(sInputRecord);
} // end while
// Close the input file
fileIn.close();
// Close the output file
// xyz3 This line gives me a compilation error as well
fOut.close();
} // end ProcessInputFile_function
} // end of class
Here are the compilation errors:
C:\art\web\java\Programs\RankSeparation>javac RankSeparation.java
RankSeparation.java:113: cannot resolve symbol
symbol : variable psOut
location: class RankSeparation
psOut.println(sInputRecord);
^
RankSeparation.java:122: cannot resolve symbol
symbol : variable fOut
location: class RankSeparation
fOut.close();
^
2 errors
Any pointers will be greatly appreciated.