从字符串文件中读取时,如何识别特殊的分隔符字符串?

时间:2011-03-18 15:23:44

标签: java bufferedreader fileinputstream datainputstream

我想从文件中读取字符串。当找到某个字符串(><)时,我想开始读取整数,并将它们转换为二进制字符串。

我的程序正在读取字符串并成功保存在ArrayList中,但是 它无法识别><符号,因此二进制字符串的读取不成功。

守则


try {
    FileInputStream fstream = new FileInputStream(fc.getSelectedFile().getPath());
    // Get the object of DataInputStream
    DataInputStream ino = new DataInputStream(fstream);
    BufferedReader br = new BufferedReader(new InputStreamReader(ino));
    String ln;
    String str, next;
    int line, c =0;

    while ((ln = br.readLine()) != null) {
        character = ln;
        System.out.println(character);
        iname.add(ln); // arraylist that holds the strings
        if (iname.get(c).equals("><")) {
            break; // break and moves
            // on with the following while loop to start reading binary strings instead.

        }
        c++;
    }

    String s = "";
    // System.out.println("SEQUENCE of bytes");

    while ((line = ino.read()) != -1) {
        String temp = Integer.toString(line, 2);
        arrayl.add(temp);
        System.out.println("telise? oxii");
        System.out.println(line);
    }

    ino.close();

} catch (Exception exc) { }

我正在尝试阅读的文件是:

 T 
 E 
 a
 v 
 X 
 L 
 A 
 . 
 x 
 "><" 
 sequence of bytes.

最后一部分保存为字节,文本文件中显示为。不用担心这一点有用。所有字符串都保存在一个新行中。

3 个答案:

答案 0 :(得分:0)

你能不能这样做:

while ((ln = br.readLine()) != null){
            character=ln;
            System.out.println(character);

            //
            // Look for magic characters >< and stop reading if found
            //

            if (character.indexOf("><") >= 0) {
               break;
            }

            iname.add(ln);
    }

如果您不想将魔术符号添加到ArrayList,这将有效。您的代码示例不完整 - 如果您仍然遇到问题,则需要发布整个班级。

答案 1 :(得分:0)

  

&LT;是两个字符,iname.get(c)只有一个字符。

你应该做的是测试ln是否等于&gt;如果下一个字符等于&lt; 。如果两个测试都通过,则跳出循环。

你必须要满足

答案 2 :(得分:0)

使用Scanner。它允许您指定分隔符,并具有将输入标记读取为String或int的方法。