复制文本文件的第一行?

时间:2014-07-09 17:58:47

标签: java text bufferedreader filewriter

    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();
        }
}

3 个答案:

答案 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();

等。