我可以读取线本地文本文件行成一个字符串数组?(Can I read a local text fil

2019-08-17 01:56发布

这个问题:“如何通过线读取本地(RES / RAW)文件中的行?” 有一个类似的问题交易,但我无法构建上提供有答案的解决方案的基础。 我没有得到信息(其中有一个ReadLine方法DataInputStream类)的一个非常有用的一块,而且我一直在开发者网站上的这一研究,并试图使其工作。

我所试图做的是存储在一个文本文件的连续行成一个字符串数组读取信息,使得第一行是第一个数组元素,第二行是一个数组元素,等等......然后这个字符串阵列将被用于填充在打开下一个活动的文本字段。 这是所有的开关壳体的内部发生的(取决于选择哪个列表项的情况下,即,不同的文本文件被加载)。 这是我到目前为止有:

//Retrieve necessary text file for inputstream
InputStream buildinginfo = getResources().openRawResource(R.raw.testbuilding);
class DataInputStream extends FilterInputStream{
    protected DataInputStream(InputStream buildinginfo) {
        super(buildinginfo);
        // TODO Auto-generated constructor stub
        int i;  
        String[] building_info;
        //Assign lines of text to array
        for(i=0; i<5; i++){
            building_info[i] = buildinginfo.readLine();
        }
    }
}

到目前为止,编辑器是好的,它除了这些错误,我没有足够的经验,使他们的感觉。 我明白他们在说什么,但不是如何解决这些问题。 该错误是在我试图设置输入流和分配值开关盒内的部分。 最重要的是,在该命令的readLine发生行,我得到:“ - 该方法的readLine是未定义类型DataInputStream类”“ - 该方法的readLine是未定义类型的InputStream”

这如果我没有记错的话,我不明白,因为,这里说的( http://developer.android.com/reference/java/io/DataInputStream.html )是DataInputStream类具有可ReadLine方法(我发现了从这个问题所指上文)。 很显然,我没有正确使用DataInputStream类,但我似乎无法弄清楚如何。 我已经通过在这里的几个问题看上去和上面提到的几次链接的页面。

如果有人能看到我在做什么错了,我会感谢您的帮助很大。 如果我对这种类型的任务完全找错了树,我浪费时间道歉,但一些指引或转诊到适当的教程资源,将不胜感激。 我花了最后两天,试图找出这些错误。

Answer 1:

好了,所以没有其他人在这里你帮助了......在这里去。

基本上你已经在你如何使用API​​类的理解是错误的一步。

您的代码试图定义 DataInputStream类。 你想使用已经通过API提供的,而不是一个。 通过重新定义类,你实际上是掩盖了API类(你绝对不希望出现这种情况)。

所以,如果你看一下DataInputStream类的文档,你会看到一个构造函数。 这允许你创建一个类的实例 。 这是你想要的,而不是:)

InputStream buildinginfo = getResources().openRawResource(R.raw.testbuilding);
DataInputStream myDIS = new DataInputStream(buildinginfo);

//you've now got an instance of DataInputStream called myDIS

String firstString = myDIS.readLine();

//voila ... your firstString variable should contain some text

还有你阵列码的问题......但我不会以这种方式使用数组。

你应该使用ArrayList,而后在while循环的线,所以你不需要与大小鼓捣。

首先,让我们摆脱这一行的(我把它注释掉:

//String firstString = myDIS.readLine();

并创建一个ArrayList是一个模板类,所以注意的一个实例String中尖括号表示,我们希望我们的数组在什么样的元素:

ArrayList<String> list = new ArrayList<String>();

您可以使用Add方法将元素添加到ArrayList。 我们要做整个事情一气呵成,不用担心以后我会解释...

String myLine; //declare a variable

//now loop through and check if we have input, if so append it to list

while((myLine=myDIS.readline())!=null) list.add(myLine);

最后一行是有点嚼劲,但是当你分配MYLINE这个变量返回一个结果,你可以用NULL比较......一旦最后一行被读取时,readline的函数将返回null。 while循环的条件相当于假,滴出循环。

有一个叫简单的辅助功能toArray把你的数组列表变成一个简单的数组。

String[] myStringArray = list.toArray(new String[list.size()])

你现在有所需的输出。 我建议看在Android上一些影片以获取语言一般的感觉,但我希望这有助于你inderstand其中的错误了。



文章来源: Can I read a local text file line by line into a string array?