我一直试图弄清楚如何解析文本文件。如果文本文件的格式不是不打印内容。
第一行应以S开头,每一行都是以下形式之一
S:X
N:X
N:XXX
其中x可以是任何大写字母,0或1或e。
这是我的代码:
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
class myjFileChooser {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final JFrame f = new JFrame("Document Viewer");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JFileChooser fileChooser = new JFileChooser();
JPanel gui = new JPanel(new BorderLayout());
final JEditorPane document = new JEditorPane();
gui.add(new JScrollPane(document), BorderLayout.CENTER);
JButton open = new JButton("Open");
open.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent ae) {
int result = fileChooser.showOpenDialog(f);
if (result==JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
try {
document.setPage(file.toURI().toURL());
} catch(Exception e) {
e.printStackTrace();
}
}
}
});
gui.add(open, BorderLayout.NORTH);
f.setContentPane(gui);
f.pack();
f.setSize(400,300);
f.setLocationByPlatform(true);
f.setVisible(true);
}
});
}
}
答案 0 :(得分:0)
我建议将您的要求分成几个部分。
首先编写一个过程boolean checkFormat(String line)
,它将一行文本作为输入,如果满足所需格式,则返回true
。
第二次逐行读取文件。
通过调用checkFormat()
程序,检查每一行是否正常。如果没有,那么你就完成了,你不必打印任何东西。
第三,如果所有行检查都没问题,那么第二次逐行读取文件并打印每一行。
以下是逐行读取文本文件的示例:http://rosettacode.org/wiki/Read_a_file_line_by_line#Java