【问题标题】:Why File.exists returns false positive为什么 File.exists 返回误报
【发布时间】:2012-12-19 06:37:13
【问题描述】:

我的 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;
    }

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

【问题讨论】:

    标签: java android file file-io


    【解决方案1】:

    你有一个严重的错字:

    if(f.exists());
    

    ; 基本上忽略了if 语句。

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

    if(f.exists())
        Log.i(StaticValues.TAG, "f exists");
    

    但是这里有点糟糕。

    【讨论】:

      【解决方案2】:

      您的if 条件末尾有一个semi-colon:-

      if(f.exists());  <-- Semi-colon here is causing problem
      

      因此,以下块只是一个本地块,无论您的 if 条件评估为什么,都会执行该块。

      【讨论】:

      • 谢谢,我不敢相信我没有注意到它。它以前发生过一次,我通常对此很小心。
      • @Raigex.. 嗯,它有时会发生。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 2017-11-24
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      相关资源
      最近更新 更多