字符流 |
文件字符输入流 FileReader
java.lang.Object
java.io.Reader
java.io.InputStreamReader 转换流(字节输入流===>字符输入流)
java.io.FileReader
public class FileReaderTest {
public static void main(String[] args) throws Exception { FileReader fileReader=new FileReader(new File(filePath));
char[] chars=new char[1024];
int temp=0;
while ((temp=fileReader.read(chars))!=-1) {
System.out.print(new String(chars,0,temp));
}
fileReader.close();
}
}
文件字符输出流 FileWriter
java.lang.Object
java.io.Writer
java.io.OutputStreamWriter 转换流(字节输出流===>字符输出流)
java.io.FileWriter
- 接口 Closeable, Flushable, Appendable
public class FileWriterText{
public static void main(String args[]) throws Exception{
//FileWriter filewriter=new FileWriter(new file(filePath),true);追加
Filewriter filewriter=new FileWriter(new File(filePath));//覆盖
filewriter.write("装饰者模式");
char[] chars=new char[]{'抽','像','类'};
filewriter.write(chars,0,3);
filewriter.flush();
filewriter.close();
}
}
利用文件字符流复制文件
public class CopyText{
public static void main(String args[]) throws Exception{
FileWriter filewriter=new FileWriter(FileName2);
FileReader filereader=new FileReader(fileName1);
char[] chars=new char[1024];
int temp=0;
while((temp=filereader.read(chars))!=-1)
filewriter.write(chars,1,temp)
filewriter.flush();
filewriter.close();
filereader.close();
}
}
只能复制纯文本文件
带有缓冲区的字符输入流及转换流
BufferedReader
java.lang.Object
java.io.Reader
java.io.BufferedReader
InputStreamReader
java.lang.Object
java.io.Reader
*java.io.InputStreamReader*
public class BufferedReaderText{
public static void main(String arg[]){
BufferedReader bufferedreader=new BufferedReader(new InputStreamReader(new FileInputStream(new File(filePath)),"utf-8"));
String temp=null;
//readLine()方法每次读取一行,行尾不带换行符
while((temp=bufferedreader.readLine())!=null){
System.out.println(temp);
bufferedreader.close();//只需关闭最外层的流(装饰者模式)
}
}
}
带有缓冲区的字符输出流及转换流
BufferedWriter
java.lang.Object
java.io.Writer
java.io.BufferedWriter
- 接口 Closeable, Flushable, Appendable
OutputStreamWriter
java.lang.Object
java.io.Writer
*java.io.OutputStreamWriter*
- *接口 Closeable, Flushable, Appendable*
public class BefferedWriterText{
public static void main(String[] args) throws IOException {
BufferedWriter bufferedwriter=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(filePath),true),"utf-8"));
bufferedwriter.write("接口")
bufferedwriter.newLine();//插入一个行分隔符
bufferedwriter.write("抽象类")bufferedwriter.write(new char[] {'亘','古','匆','匆'},0,4);
bufferedwriter.flush();
bufferedwriter.close();//只需关闭最外层的流(装饰者模式)
}
}
数据字节输入流及输出流
DataInputStream
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.io.DataInputStream
DataOutputStream
java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
*java.io.DataOutputStream*
- 接口 Closeable, DataOutput, Flushable
public class Io10 {
public static void main(String args[]) throws Exception{
method01();
method03();
}
private static void method03() throws Exception{
DataInputStream datainputstream=new DataInputStream(new FileInputStream(filePath));
byte by=datainputstream.readByte();
short sh=datainputstream.readShort();
int i=datainputstream.read();
long l=datainputstream.readLong();
double d=datainputstream.readDouble();
float f=datainputstream.readFloat();
char c=datainputstream.readChar();
boolean b=datainputstream.readBoolean();
System.out.println(by);
System.out.println(sh);
System.out.println(i);
System.out.println(l);
System.out.println(d);
System.out.println(f);
System.out.println(c);
System.out.println(b);
datainputstream.close();
}
private static void method01() throws Exception{
DataOutputStream dataoutputstream=new DataOutputStream(new FileOutputStream(filePath));
byte by=-128;
short sh=12345;
int i=10;
long l=1564853415421524156L;
double d=12.2d;
float f=5.5f;
char c='a';
boolean b=true;
dataoutputstream.writeByte(by);
dataoutputstream.writeShort(sh);
dataoutputstream.write(i);
dataoutputstream.writeLong(l);
dataoutputstream.writeDouble(d);
dataoutputstream.writeFloat(f);
dataoutputstream.writeChar(c);
dataoutputstream.writeBoolean(b);
dataoutputstream.write(bytes);
dataoutputstream.flush();
dataoutputstream.close();
}
}
用DataInputStream 写入一个类型的数据,用 DataOutputStream读出数据时可以保持类型不变
数据流特点:
-
写入是什么类型的数据,读出是相应类型的数据;
-
要先写后读;用 DataOutputStream 流写,用 DataInputStream 流读;