for (int i = 0; i<file.length(); i++) {
while (line.charAt(i) != '\n') {
first = file.substring(0,i);
}
}
我试图让上面的代码在文本中递增,如果找到了一个断裂线,首先将该行添加到实例变量中。我出于某种原因出错了界限错误。
我正在使用BufferedReader读取文本文件。我想将文本文件的第一行添加到名为line的实例变量中,然后将其传递给FileWriter,FileWriter将其写入新的文本文件。
另外,我遇到的另一个问题是,如果我将文件写入新文件,它会增加x次(调用编写器)。我该怎么做才能只写这一行一次呢?
谢谢。
编辑: 我正在使用的当前FileWriter是将多个新行写入新文件。假设我添加了行变量writer.write(line);它会写
line
1
line
2
line
3
I want it like this:
line
1
2
3
static void file(String in) {
//nums is instance variable
String numbers = nums;
try {
FileWriter writer = new FileWriter(output,true);
writer.write(line + System.getProperty("line.separator", "\r\n"));
writer.write(numbers + System.getProperty("line.separator", "\r\n"));
writer.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
答案 0 :(得分:1)
正如redFIVE所指出的那样,解释会很好。我打开文件作为输入流,然后将其所有内容读入BufferReader(http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html)。 BufferReader支持readline()函数,它将处理所有繁杂的工作,并允许您逐行访问文件。最后关闭缓冲区以释放和系统资源。
private void readFile(File file) throws IOException {
FileInputStream fis = new FileInputStream(file);
//Construct BufferedReader from InputStreamReader
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String line = null;
while ((line = br.readLine()) != null) {
//do something with line
}
br.close();
}
答案 1 :(得分:1)
如果您正在使用BufferedReader,只需使用readLine()就可以轻松实现。
String line = br.readLine();
我不确定问题的第二部分是什么问题。你能澄清问题/用法是什么吗?
答案 2 :(得分:1)
您可以使用Scanner
。这样的事情应该做
Scanner in = new Scanner(new File("text.txt"))
line = in.nextLine();
in.nextLine()
读取\n
并返回一个字符串。如果你想要更多行,你可以在while循环中使用它:
while(in.hasNextLine())
line = in.nextLine();
等。