import java.io.File
import java.io.RandomAccessFile
/**
* 读取文档的第二行内容
*
* @author 3306 2017年3月21日
* @see
* @since 1.0
*/
public class CountLine {
/*
* 读取文件绝对路径
*/
private static String filePath = "d:/cms.sql"
public static void main(String[] args) {
long line = readLine(filePath)
System.out.println(line)
}
/**
* 读取文件行数
*
* @param path
* 文件路径
* @return long
*/
public static long readLine(String path) {
long index = 0
try {
RandomAccessFile file = new RandomAccessFile(new File(path), "r")
while (null != file.readLine()) {
index++
}
file.close()
} catch (Exception e) {
e.printStackTrace()
}
return index
}
}
可以通过BufferedReader 流的形式进行读取,之后循环输出每一行的内容。BufferedReader bre = null
try {
bre = new BufferedReader(new FileReader(file))//file为文件的路径+文件名称+文件后缀
while ((str = bre.readLine())!= null) // ●判断最后一行不存在,为空结束循环
{
System.out.println(str)//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close()
package com.lwj.demo
import java.io.*
public class RandomAccessFileDemo {
public static void main(String[] args) throws Exception {
RandomAccessFile file = new RandomAccessFile("file", "rw")
// 以下向file文件中写数据
file.writeInt(20)// 占4个字节
file.writeDouble(8.236598)// 占8个字节
file.writeUTF("这是一个UTF字符串")// 这个长度写在当前文件指针的前两个字节处,可用readShort()读取
file.writeBoolean(true)// 占1个字节
file.writeShort(395)// 占2个字节
file.writeLong(2325451l)// 占8个字节
file.writeUTF("又是一个UTF字符串")
file.writeFloat(35.5f)// 占4个字节
file.writeChar('a')// 占2个字节
file.seek(0)// 把文件指针位置设置到文件起始处
// 以下从file文件中读数据,要注意文件指针的位置
System.out.println("——————从file文件指定位置读数据——————")
System.out.println(file.readInt())
System.out.println(file.readDouble())
System.out.println(file.readUTF())
file.skipBytes(3)// 将文件指针跳过3个字节,本例中即跳过了一个boolean值和short值。
System.out.println(file.readLong())
file.skipBytes(file.readShort()) // 跳过文件中“又是一个UTF字符串”所占字节,注意readShort()方法会移动文件指针,所以不用加2。
System.out.println(file.readFloat())
}
}
参考资料
http://blog.csdn.net/akon_vm/article/details/7429245