Java程序继续在我的文件中插入相同的行

时间:2014-05-15 19:20:20

标签: java swing file

所以我试图读取一个文件并在顶部添加两行代码。到目前为止,还没有工作,所以我试着读取线条并将它们写回来。这是一次重大失败。它只会写入目录中的一个文件,并且只是一直填写xmlopentag,即使它被一遍又一遍地注释掉了。如果有人有任何想法,将不胜感激。

ArrayList<String> lines = new ArrayList();
        BufferedReader reader = null;
        String xmlstylesheet = "<?xml-stylesheet type=\"text/xsl\" href=\""+stylefilename+"\"?>";
        String xmlopentag = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
        for(int i=0;i<files.length;i++) {
            lines.clear();
            try {
                reader = new BufferedReader(new FileReader(files[i]));
                String text = null;
                while ((text = reader.readLine()) != null) {
                    lines.add(text);
                }
            } catch (FileNotFoundException ex) {
                Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
            }
            //lines.add(1, xmlstylesheet);
            //lines.add(0, xmlopentag);
            try {
                PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(files[i])));
                for(int j=0;j<lines.size();j++) {
                    writer.write(lines.get(i));
                }
            } catch (IOException ex) {
                Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

2 个答案:

答案 0 :(得分:5)

writer.write(lines.get(i)); 

应该是

writer.write(lines.get(j));

答案 1 :(得分:1)

for PrintWriter操作的循环具有索引j用于迭代,但使用i获取列表值

请正确检查并更改以下代码

for(int j=0;j<lines.size();j++) {
                    writer.write(lines.get(i));
                }

for(int j=0;j<lines.size();j++) {
                    writer.write(lines.get(j));
                }