【问题标题】:how to read a text file with spaces android java如何读取带有空格的文本文件android java
【发布时间】:2015-01-15 09:11:57
【问题描述】:

当我知道我的文件包含时,如何将带有空格的文本文件读入 int 数组

“22 23 29 1”

等等

private String readFromFile() {

    String ret = "";

    try {
        InputStream inputStream = openFileInput("mywords.txt");

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

            while ( (receiveString = bufferedReader.readLine()) != null ) {
                stringBuilder.append(receiveString);
            }

            inputStream.close();
            ret = stringBuilder.toString();
        }
    }
    catch (FileNotFoundException e) {
        Log.e("login activity", "File not found: " + e.toString());
    } catch (IOException e) {
        Log.e("login activity", "Can not read file: " + e.toString());
    }

    return ret;
}

我一直用这个来阅读

【问题讨论】:

  • 一旦你读过你的行,使用" "正则表达式(空格)分割字符串,然后将你的子字符串解析为int

标签: java android string inputstream


【解决方案1】:

对于"22 23 29 1 ",即带有空格的整数,请尝试以下代码:

String ret="22 23 29 1 ";
ret=ret.trim();
String tok[]=ret.split(" ");
for(String s:tok) {
    System.out.println(s);
}

输出:

22
23
29
1

如果需要,您可以使用 Integer.parseInt()string 解析为 integer

【讨论】:

  • 这是一个例子,我要做一个像这样累积整数的文件,每次我打开我的应用程序时,我都希望它读取这个文件,并给我这个文件的 int 数组关于你写的内容你可以向我解释一下它的作用以及我是否需要它
  • 假设ret 保存着从文件中读取的数据,格式为22 23 29 1,那么我编写的代码会分别为您获取每个值,以防您需要进一步计算。
  • 总的来说,挖掘是完全读取整个字符串并按照我提到的那样拆分它。
  • 我不明白发生了什么你创建一个名为 tok 的字符串数组并将 ret.split 使 tok 放入 ret 的数组中?它知道单独的长度是多少?你不需要定义? s:tok 是做什么的?
  • tnx 它的工作原理我只是不明白:我在网上看到的关于?和:一起不孤单
【解决方案2】:

您也可以使用Scanner

Scanner scanner = new Scanner(inputStream).useDelimiter(" ");

然后您可以使用hasNext()next() 之类的功能来检查和阅读下一个单词。 您可以做的是创建一个ArrayListIntegers 并在获得next() 时进行解析。

类似的东西(这只是一个伪代码)

ArrayList<Integer> list = new ArrayList<Integer>();
while(scanner.hasNext()) {
    read = scanner.next();
    list.add(Integer.parseInt(read));
}
return list;

【讨论】:

    【解决方案3】:

    在返回的字符串上调用split(" "),您将获得字符串数组。根据您的使用情况进行类型转换。

    【讨论】:

    • 你能给我一个代码吗,这是我第一次阅读我不太了解的文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 2011-03-09
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多