为什么File.exists返回误报

Rai*_*gex 0 java file-io android file

我的android File.exists功能有一个奇怪的问题.以下是我的代码

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        super.onCreateView(inflater, container, savedInstanceState);
        View view = inflater.inflate(R.layout.fragment_file_browser, container);

        DataBaseHelper tmpHelper = new DataBaseHelper(getActivity());
        ButtonInfoContainer infoContainer = tmpHelper.getVideoWithId(videoId);



        //Tmp way to use this. When UX is finished will create a better way.
        File f = new File(Environment.getExternalStorageDirectory() + "/aslkfj");
        Log.i(StaticValues.TAG, Environment.getExternalStorageDirectory() + "/aslkfj");

        LinearLayout tmpView2 = (LinearLayout) view.findViewById(R.id.custom_recordings);
        if(f.exists());
        {
            Log.i(StaticValues.TAG, "f exists");

            String[] tmp = f.list();
            View tmpView = null;

            if(tmp != null)
            {
                for(int i = 0; i < tmp.length; i ++)
                {   
                    tmpView = inflater.inflate(R.layout.list_item, null);
                    TextView tmpText = (TextView) tmpView.findViewById(R.id.product_name);
                    tmpText.setText(tmp[i]);
                    tmpView2.addView(tmpView);
                }
            }
        }
        return view;
    }
Run Code Online (Sandbox Code Playgroud)

一切都很酷,但奇怪的部分是File.exists为我返回误报.它总是说该文件存在(虽然只是在这个应用程序中).上面给出的路径/ aslkfj不存在,但是当我运行此代码时,我的logcat输出f存在.为什么会发生类似的事情.

Roh*_*ain 10

你有条件semi-colon的结束if: -

if(f.exists());  <-- Semi-colon here is causing problem
Run Code Online (Sandbox Code Playgroud)

因此,以下块只是一个本地块,无论您的if条件如何评估,都将执行该块.


Sam*_*Sam 6

你有一个关键的错字:

if(f.exists());
Run Code Online (Sandbox Code Playgroud)

;基本上忽略了if声明.

这对于快速条件非常方便,例如:

if(f.exists())
    Log.i(StaticValues.TAG, "f exists");
Run Code Online (Sandbox Code Playgroud)

但是这里有一个oopies.