从文本文件中读取数字

时间:2018-07-20 08:41:51

标签: java android arrays text-files

我想读取并打印资产文件夹中文本文件(WLTP.txt)中的数字作为数组,但是我的代码每次输出null。我不知道为什么它会跳过尝试部分而跳到捕获部分。

public class WLTPc {

    public static void main(String[] args) {
        int [] data = readFiles("WLTP.txt");
        System.out.println(Arrays.toString(data));
    }

    public static int [] readFiles(String file) {
        try {

            File f = new File(file);
            Scanner s = new Scanner (f);
            int ctr = 0;
            while (s.hasNextInt()) {
                ctr ++;
                s.nextInt();
            }
            int[] arr = new int[ctr];

            Scanner s1= new Scanner(f);

            for (int i=0; i< arr.length; i++){
                arr[i] = s1.nextInt();
            }

            System.out.println(Arrays.toString(arr));
            return arr;
        }
        catch (Exception e){
            return null;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您正在直接传递文件名 并在File()对象中对其进行访问。

当您从资产访问文件时,需要使用 getAssets().open(file))

它将返回InputStream。将 InputStream 传递给Scanner(),然后根据需要读取文件。

import android.content.Context;

import java.io.IOException;
import java.util.Scanner;

public class WLTPc {

    private Context context;

    public WLTPc(Context context) {
        this.context = context;
    }

    public int[] readAssetFiles(String file) {
        try {
            Scanner s = new Scanner(context.getAssets().open(file));
            int ctr = 0;
            while (s.hasNextInt()) {
                ctr++;
                s.nextInt();
            }
            s.close();
            int[] arr = new int[ctr];

            Scanner s1 = new Scanner(context.getAssets().open(file));

            for (int i = 0; i < arr.length; i++) {
                arr[i] = s1.nextInt();
            }
            s1.close();
            return arr;

        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}