如何让这个缓冲的写入器一次写一行? JAVA

时间:2015-09-25 14:12:07

标签: java bufferedwriter

我正在创建一个小程序,它将修改保存在程序文件中的驱动程序字母。该方法的工作原理是它正确定位文件并正确修改驱动器号。

但是当我在更改文件后打开文件时,所有目录列表都在一行上,但每行需要一个目录。我已经尝试将每个单独的行保存到数组列表然后将其打印出来,但这对我来说似乎没有用,所以想知道是否有人可以提供帮助?

非常感谢。

P.S。试图让它工作并且现在遇到了另一个问题,它现在将它们全部打印成一行,但中间有空格,例如:

S:\ D A T A \ S A G E \

public class copy
{

private String newDriveLetter;
private String line;
private Path[]sageFolders;
private FileReader fileReader;
private BufferedReader bufferedReader;
private FileWriter fileWriter;
private BufferedWriter bufferedWriter;
private List<String> lines = new ArrayList<String>();



    public void scanFiles() throws IOException{

       try
       {
        System.out.println("Sage 2015 is Installed on this machine");
        File companyFile = new File(sageFolders[8] + "\\COMPANY");
        fileReader = new FileReader(companyFile);
        bufferedReader = new BufferedReader(fileReader); 

        while((line = bufferedReader.readLine()) != null)
        {
           if(line.contains("F"))
           {
               line = line.replace("F:\\","S:\\");
               lines.add(line);

           }

        }
        //Close the Readers
        fileReader.close();
        bufferedReader.close();

        fileWriter = new FileWriter(companyFile);
        bufferedWriter = new BufferedWriter(fileWriter);

        for(String s : lines)
        {
            bufferedWriter.write(s);
        }

        bufferedWriter.flush();
        bufferedWriter.close();

       }
       catch(FileNotFoundException e)
       {
          System.out.println("File not Found: Moving onto next Version"); 
       }

}

3 个答案:

答案 0 :(得分:1)

尝试PrintWriter - 所以new PrintWriter(bufferedWriter).println(s)

答案 1 :(得分:1)

问题是readLine()读取整行,然后抛弃结束的行。来自文档:

  

包含行内容的字符串,不包括任何行终止字符;如果已到达流的末尾,则为null

所以你必须再次添加它,可能使用你的平台的首选行结束:

bufferedWriter.write(String.format("%s%n", s);

此处%sString%n是平台相关的行结尾。

或者,如Ransom Briggs所示,您可以使用newline()newLine()更易于阅读,效果会稍好一些:

bufferedWriter.write(s);
bufferedWriter.newLine();

我已经离开了String.format方法,因为这是向字符串添加换行符的更常规方法。

答案 2 :(得分:0)

在bufferedWriter.write之后添加:;

bufferedWriter.write(System.getProperty("line.separator", "\n"));

这将添加系统特定的行分隔符,或者&#34; \ n&#34;如果未设置系统属性。