一、java获取文本文件的行数
public int getRows(File file) {
LineNumberReader lnr = null;
int num = 0;
try {
lnr = new LineNumberReader(new FileReader(file));
lnr.skip(Long.MAX_VALUE);
num = lnr.getLineNumber();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
lnr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return ++num;
}
skip(Long.MAX_VALUE) Parameters: n
- The number of characters to skip
java.io.LineNumberReader类是java.io.BufferedReader类的扩展,它封装了处理行号的额外能力,例如下例中得到不以“#”开头的行号:
public void parseFile(String filePath) throws IOException {
LineNumberReader in = new LineNumberReader(new FileReader(filePath));
String line = "";
while ((line = in.readLine()) != null) {
if (line.startsWith("#")) {
continue;
} else {
throw new IOException("第" + in.getLineNumber() + "行丢了#号");
}
}
in.close();
}
二、JTextpane设定特定行的字体、颜色
下面的代码在一个JTextPane中显示了一个图标,三行文字,每行用不同的颜色和大小显示:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.*;
import java.io.*;
public class Test {
JFrame frame;
JTextPane textPane;
File file;
Icon image;
public Test(){
frame = new JFrame( "JTextPane ");
textPane = new JTextPane();
file = new File( "./classes/test/icon.gif ");
image = new ImageIcon(file.getAbsoluteFile().toString());
}
public void insert(String str, AttributeSet attrSet) {
Document doc = textPane.getDocument();
str = "\n " + str ;
try {
doc.insertString(doc.getLength(), str, attrSet);
}
catch (BadLocationException e) {
System.out.println( "BadLocationException: " + e);
}
}
public void setDocs(String str,Color col,boolean bold,int fontSize) {
SimpleAttributeSet attrSet = new SimpleAttributeSet();
StyleConstants.setForeground(attrSet, col);
//颜色
if(bold==true){
StyleConstants.setBold(attrSet, true);
}//字体类型
StyleConstants.setFontSize(attrSet, fontSize);
//字体大小
insert(str, attrSet);
}
public void gui() {
textPane.insertIcon(image);
setDocs( "第一行的文字 ",Color.red,false,20);
setDocs( "第二行的文字 ",Color.BLACK,true,25);
setDocs( "第三行的文字 ",Color.BLUE,false,20);
frame.getContentPane().add(textPane, BorderLayout.CENTER);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}});
frame.setSize(200,300);
frame.setVisible(true);
}
public static void main(String[] args) {
Test test = new Test();
test.gui();
}
}