0

We are testing a java program in which we want to write the objects directly so we did implement the following test file but unfortunately we get the file with unknown characters , how can we avoid this problem ,we also want to write another file which contains the object with its attributes in a plain text format and the output returns an empty file ..

 import java.util.ArrayList;
import java.util.Scanner;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;

public class AssignTest {

    public static void main(String[] args) throws IOException {

        FileOutputStream wo = new FileOutputStream("Assignment1.txt");//here we want the objects directly 
        ObjectOutputStream s = new ObjectOutputStream(wo);


        FileWriter fw = new FileWriter("yami.txt");//while here we want the object with its attributes
        PrintWriter pw = new PrintWriter(fw);


        String fileName= "Assignment1.txt";
        try{
        ArrayList<Worker> Worker1 = new ArrayList<Worker>();
        Worker1.add(new SalariedWorker());// index 0
        SalariedWorker sw = (SalariedWorker) Worker1.get(0);//explicit casting
        Worker1.add(new SalariedWorker(1000.0));// index 1
        SalariedWorker sw1 = (SalariedWorker) Worker1.get(1);
        Worker1.add(new HourlyWorker());// index 2
        HourlyWorker hw = (HourlyWorker) Worker1.get(2);
        Worker1.add(new HourlyWorker(100.0));// index 3
        HourlyWorker hw1 = (HourlyWorker) Worker1.get(3);

        Scanner prompt = new Scanner ( System.in);
        System.out.println("Enter your monthly salary: ");
        double monthlySalary = prompt.nextDouble();
        sw.setSalary(monthlySalary);
        System.out.println("Your monthly Salary is:  " +monthlySalary+" AED");
        System.out.println(sw.toString());

        System.out.println("Enter the Percentage Increase for a Salaried worker: ");
        double PercentIncreaseS = prompt.nextDouble();
        sw.setpercentageIncrease(PercentIncreaseS);
        sw.increasePayment(monthlySalary);
        System.out.println(sw.toString(monthlySalary)); 

        System.out.println("Enter your hourly rate: ");
        double HourlyRate = prompt.nextDouble();
        hw.setRate(HourlyRate);
        System.out.println("Your Hourly Rate : "+HourlyRate+" AED");
        System.out.println(sw.toString());

        System.out.println("Enter the Percentage Increase for an Hourly worker: ");
        double PercentIncreaseH = prompt.nextDouble();
        hw.setpercentageIncrease(PercentIncreaseH);
        hw.increasePayment(HourlyRate);
        System.out.println(hw.toString(HourlyRate));

        ObjectOutputStream os = new ObjectOutputStream ( new FileOutputStream(fileName));
        os.close();

        s.writeObject(sw);
        s.writeObject(hw);


        pw.print(sw);
        pw.print(hw);

        } 
        catch (ArithmeticException ax){
        System.out.println(ax);
                }
        catch (IOException ex){
        System.out.println(ex);
                }
    }
}
1
  • Please provide a Minimal, Complete, and Verifiable example with instructions on how to run it (is something needed to be sent to the standard input?), check the result and difference between the result you expect and the result you're receiving. That will help the community to understand what is the problem and how to address it. Commented May 14, 2016 at 17:50

1 Answer 1

1

If you serialize an object to a file, you will junk characters in it as it's not a plain text file. If you want human readable file, you can convert the object into something meaningful like a json string using ObjectMapper and write the json string to the file.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.