文件字符输入输出流,缓冲流,随机流

因为字节流不能很好地操作本身容量单位较大的数据(一个字符等于多个字节),所以需要字符流。

一.字符输入,输出流的使用方法
1.输入流:
1)FileReader(String filename);
2) FileReader(File filename);

然后使用read();方法。

2.输出流:
1)FileWriter(String filename);
2)FileWriter(File filename);
3)FileWriter(String filename,boolean append);
4)FileWriter(File filename,boolean append);
如果append为true,则将字节写入文件末尾处,相当于追加信息,反之则写在开头。

然后使用write();方法。

例子如下:

import java.io.*;
public class Example{
public static void main(String args[]){
File sourceFile = new File("a.txt");              //读取的文件
File targetFile = new File("b.txt");              //写入的文件
char c[] = new char[19];                          // char型数组
try{
 Writer out = new FileWriter(targetFile,true);   //指向目的地的输出
 Reader in = new FileReader(sourceFile);         //指向源的输入流
 int n= -1;
 while((n=in.read(c))! = -1){
    out.write(c,0,n);
    }
    out.flush();
    out.close();
 }
 catch(IOException e){
  System.out.println("Error "+e);
  }
 }
}
    

二.缓冲流
缓冲流增强了读写文件的能力。BufferedReader和BufferedWriter类创建的对象称为缓冲输入,输出流。(也称为上层流)。

1.缓冲输入流
1)构造方法:BufferedReader(Reader in);

2)BufferReader流能够读取文本行,通过调用readLine();

3)我们可以通过向BufferedReader传递一个Reader子类的对象来创建一个BufferReader对象,如:

缓冲输入流使用方法:

FileReader inOne = new FileReader("Student.txt");
BufferReader inTwo = BufferedReader(inOne);
String strLine = inTwo.readLine();

输出缓冲流使用类似的:

FileWriter tofile = new FileWriter("hello.txt");
BufferedWriter out = BufferedWriter(tofile);

然后out可以调用
write(String s,int off,int len);
把字符串s写到hello.txt中,参数off是s开始处的偏移量,len是写入的字符数量。另外它还可以调用newLine();方法向文件写入一个回行符。

三.随机流
在java中,我们可以建立一个流,通过该流既能读文件,也能写文件。那就是RandomAccessFile类创建的随机流。
RandomAccessFile类创建的流的指向既可以作为流的源,也可以作为流的目的地。

1.使用方法:
1)构造方法:
RandomAccessFile(String name,String mode);
参数name用来确定一个文件名,给出创建的流的源(也是目的地)。参数mode取r(只读)或rw(可读写),决定创建流对文件的访问权利。
RandomAccessFile(File file ,String mode);
同上。

注意:随机流指向文件,不刷新文件。

2.常用方法:
close();
关闭文件。
getFilePointer();
获取当前读写的位置。
length();
获取文件的长度。
read();
从文件中读取一个字节的数据。
readBoolean();
从文件中读取一个布尔值,0代表false,其他代表true。
readByte();
从文件中读取一个字节。
readChar();
从文件中读取一个字符。(两个字节)
readDouble();
从文件读取一个双精度浮点值(8个字节)
readFloat();
从文件读取一个单精度浮点值(4个字节)
readFully(byte b[]);
读b.length字节放入数组b,完全填满该数组
readInt();
从文件中读取一个int值(4个字节)
readLine();
从文件中读取一个文本行
readLong();
从文件中读取一个长型值(8个字节)
readShort();
从文件中读取一个短型值(2个字节)
readUnsignedByte();
从文件读取一个无符号字节(1个字节)
readUnsignedShort();
从文件读取一个无符号短型值(2个字节)
readUTF();
从文件中读取一个UTF字符串
seek(long position);
定位读写位置
setLength(long newlength);
设置文件的长度。
skipBytes(int n);
在文件中跳过给定数量的字节。
write(byte b[]);
写b.length个字节到文件
writeBoolean(boolean v);
把一个布尔值作为单字节值写入文件
writeByte(int v);
向文件写入一个字节
writeByte(String s);
向文件写入一个字符串
writeChar(char c);
向文件写入一个字符
writeChars(String s);
向文件写入一个作为字符数据的字符串
writeDouble(double v);
向文件写入一个双精度浮点值
writeFloat(float v);
向文件写入一个单精度浮点值
writeInt(int v);
向文件写入一个int值
writeLong(long v);
向文件写入一个长整型值
writeShort(int v);
向文件写入一个短整型值
writeUTF(String s);
向文件写入一个UTF字符串

发布了35 篇原创文章 · 获赞 0 · 访问量 1288

猜你喜欢

转载自blog.csdn.net/c1776167012/article/details/104130770