我想从资产文件夹中的文件中读取字符串。我可以阅读没有问题,但当我试图操纵这些字符串时,我有一个奇怪的问题。
我的数据文件的内容
[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'中,接收线是未知的!
答案 0 :(得分:3)
您不应该使用==比较字符串,您应该使用equals()
或equalsIgnoreCase()
,更改:
if(receiveString == "[001]")
到
if(receiveString.equals("[001]"))
答案 1 :(得分:2)
您正在通过==
运算符比较对象。只有在访问完全相同的对象时,才会返回true。使用equals()
比较对象以检查它们是否相等。
if(receiveString.equals("[001]"))
应该为你解决。
if("[001]".equals(receiveString))
甚至可以安全无效。