除錯模式file.exits判斷目錄異常

技術小胖子發表於2017-11-08

程式碼如下:

public class testfile {

    public native RenderCar();

    public native RenderSky();

    public boolean testPathExit()

    {

        String str = Environment.getExternalStorageDirectory().getPath();

        str = str + “/Android/data/test/”;

        String str1 = “/storage/sdcard0/Android/data/test/”;

        File file = new File(str);

        if (file.exists())

        {

            return true;

        }

        return false;

    }

    

    public String getDataPath()

    {

        String str1 = “/storage/sdcard0/Android/data/test/”;

        String str = Environment.getExternalStorageDirectory().getPath();

        str = str + “/Android/data/test/”;

        File file = new File(str);

        if (file.exists()) {

            return str;

        }

        return str1;

    }

}

說明:該類編寫了一些native函式,呼叫Jni實際的函式實現,在除錯模式下getDataPath函式測試出來的str目錄永遠是不存在的,因為直接return str1,但是testPathExit函式測試的結果卻都是true,說明該目錄存在,並且單步除錯過程中進入到斷點ret = true.


在釋出版本中,列印getDataPath返回的字串,目錄確實是存在的,返回結果是/storage/emulate/0/Android/data/test,說明確實返回return str,目前尚未有任何合理的解釋

     本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1596723,如需轉載請自行聯絡原作者


相關文章