if语句上的BufferedReader输入

时间:2014-03-26 18:05:10

标签: java android if-statement bufferedreader uiswitch

有人可以帮我这个代码。 if语句没有运行但是术语是真的..(我在日志中看到它)那么这段代码有什么问题? .txt文件中有两行,因此while运行了两次。

代码:

String tag = null;
    String path = "/data/data/com.barnabas.vac.ballog/files";
    try {

        BufferedReader br = new BufferedReader(new InputStreamReader(
                new FileInputStream(path+"/Settings.txt")));
        String line = "";
        Log.e(tag, "A");
        while((line = (br.readLine())) != null) {

            if(line.getBytes() == "RunApp: ON".getBytes())
            {
                RunApp.setChecked(true);
                Log.e(tag, "B => " + line);
            }
            else if(line.getBytes() == "Battery: ON".getBytes())
            {
                Battery.setChecked(true);
                Log.e(tag, "C => " + line);
            }
            Log.e(tag, line.getBytes() + " => " + "RunApp: ON".getBytes());
            Log.e(tag, "D => " + line);
        }
        Log.e(tag, "E");
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

日志:

03-26 18:55:05.405: E/(25690): A
03-26 18:55:05.405: E/(25690): [B@419d1aa8 => [B@419d1bf8
03-26 18:55:05.405: E/(25690): D => RunApp: ON
03-26 18:55:05.405: E/(25690): [B@419d1f10 => [B@419d1fe8
03-26 18:55:05.405: E/(25690): D => Battery: ON
03-26 18:55:05.405: E/(25690): E

1 个答案:

答案 0 :(得分:0)

您正在比较byte[]个实例,字节数组。 ==运算符不会比较数组内容,只是看它们是否是相同的数组对象,而不是它们。

要比较数组内容,请使用Arrays.equals

if(Arrays.equals(line.getBytes(), "RunApp: ON".getBytes()))

您需要同样更改其他阵列比较。