从文件中读取字符串的惊人问题

时间:2014-01-15 12:46:28

标签: android

我想从资产文件夹中的文件中读取字符串。我可以阅读没有问题,但当我试图操纵这些字符串时,我有一个奇怪的问题。

我的数据文件的内容
[001]
[SCA] 23
[NBT] 2
[END]

public static String readLevelFromFileAsset(String filename, Context ctx, String levelID) 
{
    String Content = null;
    try {
        AssetManager am = ctx.getAssets();
        InputStream is = am.open(filename);

        if ( is != null )
        {
            InputStreamReader inputStreamReader = new InputStreamReader(is);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ((receiveString = bufferedReader.readLine()) != null ) 
            {
                Log.d(TAG, receiveString + " : " + receiveString.length());

                byte[] bytes = EncodingUtils.getAsciiBytes(receiveString);
                for(int i = 0; i < bytes.length; i++)
                {
                    Log.d(TAG,String.valueOf(bytes[i]));
                }

                if(receiveString == "[001]")
                {
                    Log.d(TAG, "Hello");
                    stringBuilder.append(receiveString);
                }
            }

            is.close();
            Content = stringBuilder.toString();
        }

    }
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    catch(IOException e){
        e.printStackTrace();
    }
    catch(Exception e){
        e.printStackTrace();
    }
    finally
    {
        Log.d(TAG, Content);
    }


    return Content;
}

日志的Ce内容:
[001]:5
91个
48个
48个
49个
93个

我的问题是:为什么“Hello”这个词没有写在日志中?似乎在'IF'中,接收线是未知的!

2 个答案:

答案 0 :(得分:3)

您不应该使用==比较字符串,您应该使用equals()equalsIgnoreCase(),更改:

if(receiveString == "[001]")

if(receiveString.equals("[001]"))

答案 1 :(得分:2)

您正在通过==运算符比较对象。只有在访问完全相同的对象时,才会返回true。使用equals()比较对象以检查它们是否相等。

if(receiveString.equals("[001]"))

应该为你解决。

if("[001]".equals(receiveString))

甚至可以安全无效。