有什么方法可以使用文本输入在目录中搜索文本文件的名称?

时间:2019-06-16 03:48:35

标签: java android

我正在使用API​​ 22开发Android应用,并且尝试使用SearchView在目录中查找txt文件,有什么方法可以做到这一点?不需要花哨的东西,又快又脏又好。和我在一起。

我尝试摆弄代码中的值,但是除了logcat中一些奇怪的消息外,它始终不执行任何操作。

    public void onButtonClick(View view) {
        Intent intent;
        Boolean isFound = false;
        if (isExternalStorageReadable() && seeker.toString() != "") {
            for (int i = 0; i < holder.length; i++) {
                if (holder[i].getName() == seeker.getQuery().toString() + ".txt") {
                    file2 = holder[i];
                    Log.i("Hey","found it!");
                    isFound = true;
                    continue;
                }
            }
            if (isFound) {
                switch (view.getId()) {
                    case R.id.singleDelete:
                            file2.delete();
                             holder = directory.listFiles();
                            if(holder.length == 0) {
                                intent = new Intent(this, MainActivity.class);
                                startActivity(intent);
                                finish();
                            }
                        break;
                    case R.id.load:
                            try {
                                Log.i("Hey","it's working more!");
                                intent = new Intent(this, RollerActivity.class);
                                FileReader fileReader = new FileReader(file2);
                                BufferedReader bufferedReader = new BufferedReader(fileReader);
                                str = "";
                                List<String> objects = new ArrayList<>();
                                while ((str = bufferedReader.readLine()) != null) {
                                    objects.add(str);
                                }
                                intent.putExtra("name", seeker.toString());
                                intent.putExtra("hit", Integer.parseInt(objects.get(0)));
                                intent.putExtra("dmg", Integer.parseInt(objects.get(1)));
                                intent.putExtra("dice", Integer.parseInt(objects.get(2)));
                                intent.putExtra("spinner", Integer.parseInt(objects.get(3)));
                                startActivity(intent);
                                finish();
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        break;

                }
            }
        }

    }

编辑:我已将包含的代码减少到仅遇到问题的部分,应使事情减少混乱 编辑2:我还应注意,每当我按下按钮时,Logcat中就会弹出消息“ mSecurityInputMethodService为null”,这意味着什么吗? (是的,我正在使用华为手机)

3 个答案:

答案 0 :(得分:0)

File#listFiles()返回目录中的文件(如果有问题的文件是目录)。

您可以从那里解析文件名,找到想要的文件名。

如果这不是您的意思,请向下编辑代码以仅显示相关代码。粘贴整个课程变得很难看。

答案 1 :(得分:0)

我了解到我的问题实际上与字符串比较有关。看来我使用C ++和C#已有很长时间了。

答案 2 :(得分:0)

尝试更改

if (holder[i].getName() == seeker.getQuery().toString() + ".txt")

if (holder[i].getName().equals ( seeker.getQuery().toString() + ".txt"))

在Java中,使用==比较字符串将检查两个字符串是否引用内存中的同一字符串对象。

例如

String message1 = "Hello"
String message2 = "Hello"
if (message1 == message2)

因为我们正在比较两个不同的对象,所以它将始终返回false。

使用String.equals()比较字符串将比较字符串的实际内容。