user3732793
user3732793

Reputation: 1939

FileInputStream fails on properties file

This properties file in PROJECT/resources/properties.properties can be read and show its content with:

public void showFileContent(String fileName){

    File file = new File (fileName);
    FileInputStream input = null;

    if(file.exists()){
        int content;
        try {
            input = new FileInputStream(fileName);
            while ((content = input.read()) != -1) {
                System.out.print((char) content);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (input != null) {
                try {
                    input.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }       
    }else{
        System.out.println("Error : properties File "  + fileName + " not found");
    }
}

But it fails with a null pointer exception at properties.load with that code

public Properties getProperties(String fileName, Properties properties){

    File file = new File (fileName);
    InputStream input = null;

    if(file.exists()){
        try {
            input = new FileInputStream(fileName);
            properties.load(input);
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }else{
        System.out.println("Error : properties File "  + fileName + " not found");
    }
    return properties;
}

even when input is set to

input = this.getClass().getClassLoader().getResourceAsStream(fileName)

anyone knows why that can be for a properties text file at the same path for both methods ?

Upvotes: 1

Views: 578

Answers (1)

Darshan Mehta
Darshan Mehta

Reputation: 30809

Since the first code snippet works, it seems properties is passed as null to the getProperties() method, resulting in NullPointerException.

Ideally, we shouldn't be passing the properties at all. We just need to create a new object and return it.

Upvotes: 3

Related Questions