2011-03-18 110 views
1

我想从文件中读取字符串。当找到某个字符串(><)时,我想要开始读取整数,并将它们转换为二进制字符串。从字符串文件中读取时如何识别特殊的分隔符字符串?

我的程序读取字符串,并将其保存在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. 

其中最后一部分被保存为字节,以及文本文件看起来像。不用担心这个位有效。所有的字符串都保存在一个新的行中。

+2

“>”会自己排成一行吗?因为否则你写的是不行的。该行中是否还有其他字符(空格等)? – Christina 2011-03-18 15:29:41

+0

你能举一个你想要阅读的格式的例子吗? – 2011-03-18 15:31:18

+0

@Christina是“>”它本身就是一条线。没有别的是写在那一行。 – elena 2011-03-18 15:34:06

回答

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。您的代码示例不完整 - 如果您仍然遇到问题,则需要发布整个课程。

+0

你的意思是> = 0 ... <0将破坏每一行,除了他需要的。 – amit 2011-03-18 15:44:13

+0

糟糕。你是对的。感谢您指出,它是固定的。 – Hari 2011-03-18 15:49:31

0

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

你应该做的是测试如果ln等于>,然后再测试下一个字符是否等于<。如果两个测试通过则跳出循环。

,你将不得不becarefull

0

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

相关问题