java-IO-2(字符流及其他常用流)


字符流

文件字符输入流 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

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

OutputStreamWriter

java.lang.Object
继承者 java.io.Writer
继承者 *java.io.OutputStreamWriter*

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*

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 流读;
    在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值