读取文本文件的部分内容

时间:2013-12-04 18:08:12

标签: java file text

编辑:我想这个帖子可以关闭,因为我的所有问题都已经得到解答了!感谢所有帮助过我的人!

编辑:我偶然发现了openFileInput("myfilename.txt");的错误。这是错误:The method openFileInput(String) is undefined for the type Game。我在这里读到了一个答案:Android File I/O openFileInput() undefined,但必须承认我不太明白......

我正在尝试读取部分文本文件,直到令牌“;”。这是我写的代码:

InputStream instream = openFileInput("myfilename.txt");

String line=null;

InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader); 

while((line=buffreader.readLine())!=null){
    String[] parts=line.split(";");
    int intOne = Integer.parseInt(parts([0]);
    int intTwo = Integer.parseInt(parts([1]);
    String strLine = parts([3]);
}

public static void Start(){
    while(there is text in the file){
        // read first line till ';';
        // name that variable intOne;
        // read first line after ';' till next ';';
        // name that variable intTwo;
        // read next line, declare as strLine;
        // System.out.println(strLine);
    }
}

在它下面是它应该做什么的想法。但我有一些问题:

  1. 我是否可以说String[] parts是一个数组?

  2. 我想要一个更大的文件,但每个循环只读3行。或者,当我有一个100行的文件时,我可以一次读取所有文件,然后从parts[]回忆它们吗?或者这会占用太多时间?

  3. 文本文件应该在哪里?当我在Eclipse中测试时,在项目文件夹中?当我把它导出到罐子里面时?

  4. 希望有人能回答我的问题!

    (我的来源是:Read specific string from each line of text file using BufferedReader in java,Gilbert Le Blanc的全部学分!)

    编辑:当我在文件中执行此操作时:

    Hello,
    I am coding;
    

    pars[0]Hello,,因为那是一行,还是Hello, I am coding?它会接受它吗?

    另一个编辑: 我希望创建一些基于文本的RPG引擎,您只需要编辑文本文件,即可更改故事。例如(在文本文件中):

    30;60;       //Score needed for this piece of the story
    Hello!;      // The text
    Hi!;5;       // The first possible answer; the score you'll get when you answer this
    Shut up!;-5; // The second possible answer; the score you'll get when you answer this
    

1 个答案:

答案 0 :(得分:0)

你真正想要的是一个接一个地读一个字符。我在Smooks框架中使用了一些不错的BufferedSegmentReader,这对你来说很有意思。看一下这里的源代码:

http://grepcode.com/file/repo1.maven.org/maven2/org.milyn/milyn-smooks-all/1.5/org/milyn/edisax/BufferedSegmentReader.java

它从流中逐个读取字符并将其放入StringBuffer中。有一些分隔符表示一个“段”何时完成读取,之后你可以使用这个段直到你告诉BufferedSegmentReader继续前进。

我认为这适合您的情况,是您正在寻找的方法。