简体   繁体   中英

android FileInputStream EOF

I am creating a new File object like so:

keystoreFile = new File(getDir("sslDir", Context.MODE_PRIVATE), "CAKeyStore.jks")

Later, I try to use the the file for an input stream like so:

 BufferedInputStream bufstream = new BufferedInputStream(new FileInputStream(keystoreFile));
            Log.d(TAG, "Available? " + bufstream.available());
            sslKeystore.load(bufstream , KEYSTORE_PASSWORD.toCharArray());

and in logcat I get an EOF Exception, and "available" bytes shown is zero

 Available? 0
07-09 18:00:13.090  11229-11229/de.blinkt.openvpn W/System.err﹕ java.io.EOFException
07-09 18:00:13.090  11229-11229/de.blinkt.openvpn W/System.err﹕ at libcore.io.Streams.readFully(Streams.java:83)
07-09 18:00:13.090  11229-11229/de.blinkt.openvpn W/System.err﹕ at java.io.DataInputStream.readInt(DataInputStream.java:103)
07-09 18:00:13.090  11229-11229/de.blinkt.openvpn W/System.err﹕ at com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi.engineLoad(BcKeyStoreSpi.java:799)
07-09 18:00:13.100  11229-11229/de.blinkt.openvpn W/System.err﹕ at java.security.KeyStore.load(KeyStore.java:589)

However, if I clear my apps data, and try this again, I don't get the problem.

Is there something wrong with the way I am creating the file, such that when the app is re-loaded I get this EOF exception?

Edit:

The method where the file is actually created is within this function:

private void saveKeystore() {
    try {
        sslKeystore.store(new FileOutputStream(keystoreFile), KEYSTORE_PASSWORD.toCharArray());
    } catch (Exception e) {
        Log.d(TAG, "Unable to save keystore");
        e.printStackTrace();
    }
}

You need to close the FileOutputStream yourself. The KeyStore.store() won't do that for you. Ditto the FileInputStream and load(). See the examples in the Javadoc .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM