Saving User Preferences
The better alternative is the second alternative, because the first alternative may only write the data to disk when the Garbage Collector clears up the stream. The file will remain open for all that time too, leading to long holds on file handles in the OS.

i.e. the first one may produce unexpected results.

The second alternative is an improvement, but you should consider using a "try with resources" block, which has been around for the past 6 years in Java 7 and 8... The try-with-resources is a far more elegant way to approach this problem, and it makes the exception handling "trivial"...

public static void storePreferences() {
    File prefs = new File(new File(ReleaseInfo.getAppFolder()), SETTINGSFILENAME);
    try (OutputStream fos = new FileOutputStream(prefs)) {
        Preferences.userRoot().exportSubtree(fos);
    } catch (IOException | BackingStoreException e) {
        e.printStackTrace();
    }
}


Note that I used the more convenient 2-argument File constructor instead of the constant File.separator

Further, I would suggest getting a better-performing new NIO2 functions, and wrap the resulting OutputStream with a buffer:

public static void storePreferences() {
    Path prefs = Paths.get(ReleaseInfo.getAppFolder(), SETTINGSFILENAME);
    try (OutputStream fos = new BufferedOutputStream(Files.newOutputStream(prefs))) {
        Preferences.userRoot().exportSubtree(fos);
    } catch (IOException | BackingStoreException e) {
        e.printStackTrace();
    }
}