创建文件指针会导致Android开发中出现异常

时间:2014-08-07 23:06:36

标签: android

Hello StackOverFlow社区。这是我第一次发帖,所以如果我犯了任何错误,我会道歉!

我一直在尝试获取应用程序的内部存储目录以读取和写入文件。

import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import android.annotation.SuppressLint;
import android.content.ContextWrapper;
import android.support.v7.app.ActionBarActivity;

public class Security_Management extends ActionBarActivity

....Other Functions...

public byte[] Encrypted_File_Reader (String File_Name) throws Exception
{
    /* Checks that the File can be Created/Exists **/
    File file = new File(getFilesDir(), File_Name);
    if(file.exists() == false)
    {
        byte[] Output = null;
        return Output;
    }
    else
    {
        /* Prepares to Read the File **/
        InputStream Input = new FileInputStream(file);

        /* Prepares to Read in the Data **/
        ByteArrayOutputStream contents = new ByteArrayOutputStream();
        int len;
        byte[] data = new byte[1024];

        /* Reads the File **/ 
        do 
        {
            len = Input.read(data);

            if (len > 0) contents.write(data, 0, len);

        } while (len == data.length);

        byte[] Draft_Byte_Output = contents.toByteArray();

        /* Decodes the File **/
        byte[] Output = Decoder(User_Key, Draft_Byte_Output);

        /* Finishes **/
        Input.close();

        return Output;
    }
}

但是,每次尝试运行代码时,都会在以下行中发生异常:

File file = new File(CtWr.getFilesDir(), File_Name);

我对导致异常的原因感到茫然,因为我的应用依赖于此功能才能使其正常工作。谢谢你的任何回复!!

加成 我认为这是堆栈跟踪:

08-12 00:18:34.756: W/Binder(5826): Caught a RuntimeException from the binder stub implementation.
08-12 00:18:34.756: W/Binder(5826): java.lang.NullPointerException
08-12 00:18:34.756: W/Binder(5826):     at android.inputmethodservice.IInputMethodWrapper.setSessionEnabled(IInputMethodWrapper.java:280)
08-12 00:18:34.756: W/Binder(5826):     at com.android.internal.view.IInputMethod$Stub.onTransact(IInputMethod.java:129)
08-12 00:18:34.756: W/Binder(5826):     at android.os.Binder.execTransact(Binder.java:404)
08-12 00:18:34.756: W/Binder(5826):     at dalvik.system.NativeStart.run(Native Method)

1 个答案:

答案 0 :(得分:0)

  

我一直在尝试在我的应用程序中使用ContextWrapper来获取应用程序的内部存储目录以读取和写入文件。

您无需创建ContextWrapper“以获取用于读取和写入文件的应用程序的内部存储目录”。对于初学者,Activity ContextWrapper

  

但是,每次尝试运行代码时,都会在以下行中发生异常:

摆脱CtWr.并在活动本身上致电getFilesDir()

将来,如果您崩溃,use LogCat to examine your Java stack trace