当前位置:天才代写 > tutorial > JAVA 教程 > Java操纵文本文件要领详解

Java操纵文本文件要领详解

2017-11-13 08:00 星期一 所属: JAVA 教程 浏览:702

最初java是不支持对文本文件的处理惩罚的,为了补充这个缺憾而引入了Reader和Writer两个类,这两个类都是抽象类,Writer中write(char[] ch,int off,int length),flush()和close()要领为抽象要领,Reader中read(char[] ch,int off,int length)和close()要领是抽象要领。子类应该别离实现他们。

当我们读写文本文件的时候,回收Reader长短常利便的,好比FileReader,InputStreamReader和BufferedReader。个中最重要的类是InputStreamReader,它是字节转换为字符的桥梁。你可以在结构器重指定编码的方法,假如不指定的话将回收底层操纵系统的默认编码方法,譬喻GBK等。当利用FileReader读取文件的时候。

FileReader fr = new FileReader("ming.txt");
int ch = 0;
while((ch = fr.read())!=-1 )
{
System.out.print((char)ch);
}

个中read()要领返回的是读取得下个字符。虽然你也可以利用read(char[] ch,int off,int length)这和处理惩罚二进制文件的时候雷同,不多说了。假如利用InputStreamReader来读取文件的时候

while((ch = isr.read())!=-1)
{
System.out.print((char)ch);
}

这和FileReader并没有什么区别,事实上在FileReader中的要领都是从InputStreamReader中担任过来的。read()要领是较量好费时间的,假如为了提高效率我们可以利用BufferedReader对Reader举办包装,这样可以提高读取得速度,我们可以一行一行的读取文本,利用readLine()要领。

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
String data = null;
while((data = br.readLine())!=null)
{
System.out.println(data);
}

当你大白了如何用Reader来读取文本文件的时候那么用Writer写文件同样很是简朴。有一点需要留意,当你写文件的时候,为了提高效率,写入的数据会先放入缓冲区,然后写入文件。因此有时候你需要主动挪用flush()要领。与上面临应的写文件的要领为:

FileWriter fw = new FileWriter("hello.txt");
String s = "hello world";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
pw.println(s);

不要健忘用完后封锁流!下面是个小例子,辅佐新手领略。其实有的时候java的IO系统是需要我们多记记的,否则哪天就陌生了。

hello world i like java language

import java.io.*;
public class TestFile2
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("ming.txt");
char[] buffer = new char[1024];
int ch = 0;
while((ch = fr.read())!=-1 )
{
System.out.print((char)ch);
}
InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));
while((ch = isr.read())!=-1)
{
System.out.print((char)ch);
}
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
String data = null;
while((data = br.readLine())!=null)
{
System.out.println(data);
}
FileWriter fw = new FileWriter("hello.txt");
String s = "hello world";
fw.write(s,0,s.length());
fw.flush();
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt"));
osw.write(s,0,s.length());
osw.flush();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
pw.println(s);
fr.close();
isr.close();
br.close();
fw.close();
osw.close();
pw.close();
}
}

 

    关键字:

天才代写-代写联系方式