1

尝试编写代码将标题放入文件夹中的所有文本文件中并创建输出文本文件..在不同的文件夹中..我编写了代码..使用textarea将标题放入其中并使用字符串实际上它唯一的工作是不工作是当我在标题中放置两行或多行时,我的意思是在 textarea 中。所以在输出文件中打印标题都在一行中..请帮助我..

    import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.text.Caret;

public class header3 {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        // File folder = new File("Letters" + File.separator + "LettersIn");
        // System.out.println(folder);

        // System.out.println(BFFile);

        final JFrame frame = new JFrame("Enter Header");
        JPanel panel = new JPanel();

        final JTextArea text = new JTextArea(20, 40);
        JButton button = new JButton("Enter");

        frame.add(panel);
        panel.add(text);
        panel.add(button);

        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                BufferedReader br = null;

                BufferedWriter bfAll = null;

                File folder = new File("FileIn");

                File[] BFFile = folder.listFiles();

                // Caret header1 = text.getCaret();

                String header1 = (text.getText());
                System.out.println(header1);

                text.setLineWrap(true);
                text.setWrapStyleWord(true);

                try {

                    for (File file : BFFile) {

                        br = new BufferedReader(new FileReader(file));

                        String filename = file.getName();
                        String[] fileInitialName = filename.split("\\.");

                        System.out.println(folder);

                        System.out.println(BFFile);

                        String outFileAllcount = ("FileOut" + File.separator
                                + "out" + fileInitialName[0] + ".txt");

                        bfAll = new BufferedWriter(new FileWriter(
                                outFileAllcount));

                        String line;

                        bfAll.write(header1.toString());
                        bfAll.newLine();

                        while ((line = br.readLine()) != null) {

                            bfAll.write(line.toString());
                            bfAll.newLine();
                        }

                        bfAll.newLine();
                        bfAll.flush();
                        bfAll.close();

                        frame.dispose();

                    }
                } catch (Exception e1) {
                    System.out.println("Excepton occured !! : "
                            + e1.getMessage());
                }

            }
        });

        frame.setSize(500, 400);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // String header1 = text.getText();

        // String header1 = JOptionPane.showInputDialog("here");

    }

}

请帮我!!如果我在 textarea 中放置 2 行或更多行作为标题,但将全部打印在一行中。无论如何,是否可以将 textarea 中的所有行打印为文本文件中的标题。请告诉我。谢谢。。如果我放 10 行标题它应该打印 10 行.. 在文件中.. 但它只打印 1 行.. 请帮帮我!!谢谢!!:)

4

1 回答 1

1

当您在键盘上按Enter时,Java 会添加一个换行符作为\n. 因此,header1变量仅包含\n. 正如您在示例中看到的那样,有时这还不够(例如,Windows 还需要回车符)。

因此,只需在写入文件之前执行此header1.toString()操作,将所有换行符(由 Java 放入用于换行的目的)替换为系统默认值

header1= header1.replaceAll("\n", System.lineSeparator());
于 2013-06-15T16:10:44.603 回答