JAVA如何实现从最后一行读取文件
import java io FileNotFoundException
import java io IOException
import java io RandomAccessFile
public class FromEndRF {
public static void read(String filename) {
read(filename GBK )
}
public static void read(String filename String charset) {
RandomAccessFile rf = null
try {
rf = new RandomAccessFile(filename r )
long len = rf length()
long start = rf getFilePointer()
long nextend = start + len
String line
rf seek(nextend)
int c =
while (nextend >start) {
c = rf read()
if (c == \n || c == \r ) {
line = rf readLine()
if (line != null) {
System out println(new String(line getBytes( ISO ) charset))
}else {
System out println(line) // 输出为null 可以注释掉
}
nextend
}
nextend
rf seek(nextend)
if (nextend == ) {// 当文件指针退至文件开纤山渗始处 输出第一行
System out println(new String(rf readLine() getBytes( ISO ) charset))
}
}
} catch (FileNotFoundException e) {
e printStackTrace()
} catch (IOException e) {
e printStackTrace()
} finally {
try {
if (rf != null)
rf close()
毁脊} catch (IOException e) {
e printStackTrace(唯枯)
}
}
}
public static void main(String args[]) {
read( d:\\ txt gbk )
}
lishixinzhi/Article/program/Java/hx/201311/26379ava.io包中包括许多类提供许多有关文件的各个方面 *** 作。
1 输入输出抽象基类InputStream/OutputStream ,实现文件内容 *** 作的基本功能函数read()、 write()、close()、skip()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写。在文件读写的编程过程中主要应该注意异常腔迟旅处理的技术。
2 FileInputStream/FileOutputStream:
用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象);
本地文件读写编程的基本过程为:
① 生成文件流对象(对文件读 *** 作时应该为FileInputStream类,而文件写应该为FileOutputStream类);
② 调用FileInputStream或FileOutputStream类中的功能函数如read()、write(int b)等)读写文件内容;
③ 关闭文件(close())。
3 PipedInputStream/PipedOutputStream:
用于管道输入输出(将一个程序或一个线程的输出结果伍凳直接连接到另一个程序或一个线程的输入端口,实现两者数据直接传送。 *** 作时需要连结);
4管道的连接:
方法之一是通过构造函数直接将某一个程序的输出作为另一个程序的输入,在定义对象时指明目标管道对象
PipedInputStream pInput=new PipedInputStream()
PipedOutputStream pOutput= new PipedOutputStream(pInput)
方法之二是利用双方类旦困中的任一个成员函数 connect()相连接
PipedInputStream pInput=new PipedInputStream()
PipedOutputStream pOutput= new PipedOutputStream()
pinput.connect(pOutput)
5 管道的输入与输出:
输出管道对象调用write()成员函数输出数据(即向管道的输入端发送数据);而输入管道对象调用read()成员函数可以读起数据(即从输出管道中获得数据)。这主要是借助系统所提供的缓冲机制来实现的。
6随机文件读写:
RandomAccessFile类(它直接继承于Object类而非InputStream/OutputStream类),从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)。
随机文件读写编程的基本过程为:
① 生成流对象并且指明读写类型;
② 移动读写位置;
③ 读写文件内容;
④ 关闭文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)