读取CSV文件的内容

时间:2011-10-21 19:49:28

标签: android csv bufferedreader

我使用here中的一些示例代码创建了一个资源阅读器。这是我的代码......

public static void ReadFile() {

    BufferedReader reader = new BufferedReader(new InputStreamReader(file));

    String line;
    try {
        while((line = reader.readLine()) != null){
            String[] values = line.split(",");

            Log.d(TAG, String.valueOf(values.toString()));
        }
    } catch (IOException e) {

        e.printStackTrace();
    }
}

使用此代码读取我的文件onResume ...

InputStream file = getResources().openRawResource(R.raw.csvfile);

我想我已经做对了,但是当我使用

Log.d()

实用程序来读取我的csv文件中的值(如上所示)我得到了别的东西

10-21 20:38:44.096: DEBUG/input(15223): [Ljava.lang.String;@467bbb20
10-21 20:38:44.104: DEBUG/input(15223): [Ljava.lang.String;@467bbfd8
10-21 20:38:44.104: DEBUG/input(15223): [Ljava.lang.String;@467bc3e0
10-21 20:38:44.112: DEBUG/input(15223): [Ljava.lang.String;@467bc7e8
10-21 20:38:44.112: DEBUG/input(15223): [Ljava.lang.String;@467bcbf0
10-21 20:38:44.112: DEBUG/input(15223): [Ljava.lang.String;@467bcff8
10-21 20:38:44.112: DEBUG/input(15223): [Ljava.lang.String;@467bd400
10-21 20:38:44.120: DEBUG/input(15223): [Ljava.lang.String;@467bd808
10-21 20:38:44.120: DEBUG/input(15223): [Ljava.lang.String;@467bdc10
10-21 20:38:44.120: DEBUG/input(15223): [Ljava.lang.String;@467bde60

现在我不知道你是否可以直接从这样的BufferReader返回,但这里的值似乎比我的csv文件中的值少得多。这是我的csv文件

001, 000, 000, 000, 000, 000,
001, 000, 000, 000, 000, 000,
001, 000, 000, 000, 000, 000,
001, 000, 000, 000, 000, 000,
001, 000, 000, 000, 000, 000,
001, 000, 000, 000, 000, 000,
001, 000, 000, 000, 000, 000,
001, 000, 000, 000, 000, 000,
001, 000, 000, 000, 000, 000

非常空我知道,但我是正确的,或者我的日志标签是否会返回一些可读数据,如果是这样,我在这里做错了什么。

1 个答案:

答案 0 :(得分:3)

values.toString()仅输出values数组的表示(在本例中它在内存中的位置)。您需要输出单个值。像这样:

for(String s : values) Log.d(TAG, s);

编辑:您还在每次运行while循环时重新初始化values。您既可以使用StringBuilder,也可以继续追加行直到达到最后,然后将其拆分为数组,或者您可以使用ArrayList,将每行存储在本地String中,拆分它,并将这些值附加到外部ArrayList。

没问题。 :)只是为了未来的读者,无论如何,我很乐意添加一个例子。

使用StringBuilder:

public static void ReadFile() {
    BufferedReader reader = new BufferedReader(new InputStreamReader(file));
    StringBuilder sb = new StringBuilder();
    String line;
    try {
        while((line = reader.readLine()) != null) { 
            sb.append(line);
        }
        String[] values = (sb.toString()).split(",");
        for(String s : values) Log.d(TAG, s);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

或者每行追加:

public static void ReadFile() {
    BufferedReader reader = new BufferedReader(new InputStreamReader(file));
    String line;
    ArrayList<String> values = new ArrayList<String>();
    try {
        while((line = reader.readLine()) != null) { 
            String[] strings = line.split(",");
            for(String s : strings) {
                values.add(s);
            }
        }
        for(String s : values) Log.d(TAG, s);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

这些不在我的脑海中,所以如果他们不按原样编译,请不要误导我,哈哈。