我想从文件中读取字符串。当找到某个字符串(><
)时,我想开始读取整数,并将它们转换为二进制字符串。
我的程序正在读取字符串并成功保存在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.
最后一部分保存为字节,文本文件中显示为。不用担心这一点有用。所有字符串都保存在一个新行中。
答案 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的方法。