如何在android中的logcat中看到一个数组

我想在logcat中logging像数组这样的原始数据,所以我知道输出是什么。 可以说我有一个数组…像这样:

File[] mp3List = ... Log.v("test", mp3List); 

为什么我不能将数组logging到控制台? 我该怎么做?

Solutions Collecting From Web of "如何在android中的logcat中看到一个数组"

这不起作用的原因仅仅是因为Log.v的第二个参数是一个String而不是File[] 。 Java严格执行参数types。

更新

您可以轻松地将包含File对象的信息转换为String对象。 所有的java对象都实现了一个toString() ,如果我没有记错的话,就返回一个ClassName和该对象所在address的组合。 但是这通常不包含有用的信息。 所以你需要自己定义转换。

现在要从File[]转换为String是比较复杂的,因为当你调用一个数组的方法时,它会在数组对象而不是数组的成员(包含我怀疑你关心的信息)上工作。 所以调用mp3List.toString()将返回一个描述数组对象的string,而不是数组中包含的信息。

所以你可能会想写一个像这样的方法:

 String fileArrayToString(File[] f){ String output = ""; String delimiter = "\n" // Can be new line \n tab \t etc... for (int i=0; i<f.length; i++) { output = output + f[i].getPath() + delimiter; } return output; } 

然后打电话给你的日志调用如下:

 Log.v("MyTag", fileArraytoString(mp3List); 

但是,这可能很难阅读。

我个人会这样做:

 for (int i=0; i<mp3List.legnth; i++) Log.v("MyTag", Integer.toString(i) + ":" + mp3List[i].getPath()); 

它更简单,生成更清晰的日志消息,更容易理解程序员正在发生的事情。

您不能logging数组,因为它只是一个对象。 LogCat不知道如何处理它或以你想要的方式显示它。

如果每个File对象都有一个toString()方法,它显示您可以使用的信息:

Log.v(Arrays.toString(mp3List));

否则,你将不得不连接你自己的string来logging:

 StringBuilder sb = new StringBuilder(); for(File f : mp3List) { sb.append(f.getName()); } Log.v(sb.toString()); 

如果你有一个String数组,你可以添加toString()来显示它。

对于自定义对象,您应该重写toString()方法并打印您想要查看该对象的内容。 如果你有一个数组,数组将用toString方法的输出打印出来。

也许我误解了,但我认为它只是:

 string sLog = ""; for(mp3List..) { sLog += mp3List[i].getName(); } Log.v(sLog); 

不是吗? 因为,我想,当你试图打印一个这样的数组,你会得到一个日志条目,说mp3List是一个System.Blah.Blah.File[] ..

希望能帮助到你..

我更喜欢一件衬衫:

for(File file:list) Log.d(TAG, "list: " + file.getPath());