字节流

40 篇文章 0 订阅
10 篇文章 0 订阅

一、字节流

1.分类

InputStream(输入流)

            FileInputStream         --文件输入流  

            BufferedInputStream      --缓冲输入流

字节流      ObjectInputStream   --对象输入流

            DataInputStream       --数据输入流

            ByteArrayInputStream    --内存输入流

     OutputStream(输出流)

            FileOutputStream            --文件输出流

            BufferedOutputStream   --缓冲输出流

            ObjectOutputStream --对象输出流

            DataOutputStream         --数据输出流

            ByteArrayOutputStream --内存输出流

            PrintOutputStream    --打印输出流

2. InputStream类

      所有字节输入流的父类。

3. FileInputStream类

3.1 创建文件输入流(读流)

      FileInputStream fs=new FileInputStream("e:\\1.txt");

3.2 方法

int read() //读取下一个数据字节,如果到达文件尾,返回-1。

int      read(byte[] b)

//将文件流中的字节存入byte数组中(一次性读出来)

read(byte[]) 是相当于给一个容器,没有都去填充这个容器,//它的返回值是容器中有效字节的个数。

int       read(byte[] b, int off, int len)

//将文件流中的最多len个字节的数据读入一个byte数组中 

void    close()  //关闭文件输入流并释与之有关的系统资源

例:fs.close();

long    skip(long n) //从输入流中跳过并丢弃n个字节的数据。

3.3基本操作

法一:

File f=new File("e:\\1.txt");

if(f.exists()){

    FileInputStream fi=new FileInputStream(f);

    int n;

    while((n=fi.read())!=-1){   //注意fi.read()读取下一个

       System.out.print((char)n);

    }

    fi.close();

}

法二:

File f=new File("e:\\1.txt");

if(f.exists()){

   FileInputStream fi=new FileInputStream(f);

   byte[] bs=new byte[(int)f.length()];

   fi.read(bs);

   System.out.print(new String(bs));

   fi.close();

}

4. OutputStream类

所有字节输出流的父类。

5. FileOutputStream类

5.1创建文件输出流

FileOutputStream fo=new FileOutputStream("e:\\1.txt");

5.2方法

void   write(int b)  //将指定字节写入文件输出流中,一次写一个字节

void        write(byte[] b)  //将指定数组写入文件输出流中。

void        write(byte[] b, int off, int len)   //write(byte[],起始位置,长度)表示从字节数组的开始位置写多长

void    close()  //关闭文件输入流并释与之有关的系统资源

例:fo.close();

5.3基本操作

法一:

File f=new File("e:\\1.txt");

if(!f.exists()){

   f.createNewFile();

}

FileOutputStream fos=new FileOutputStream(f);

fos.write(97);

fos.write(100);

fos.close();

法二:

File f=new File("e:\\1.txt");

if(!f.exists()){

    f.createNewFile();

}

FileOutputStream fo=new FileOutputStream(f);

Scanner sc=new Scanner(System.in);

System.out.println("请输入字符串:");

String str=sc.next();

fo.write(str.getBytes());   //注意String类中的getBytes()将字符串转换成字符组数

fo.close();

二、对文件中的内容进行添加

1. 原理:

(1)读取指定文件中的内容,转成String;

(2)将String转为StringBuffer;

(3)用户输入字符串,通过StringBuffer中的append()方法将字符串存入文件中;

(4)关闭输入流和输出流。

2.代码

File f=new File("e:\\1.txt");

FileInputStream fi=new FileInputStream(f);

byte[] bs=new byte[(int)f.length()];

fi.read(bs);

 

Scanner sc=new Scanner(System.in);

StringBuffer sb=new StringBuffer(bs);

while(true){

    System.out.println("输入添加的字符串:");

    String str=sc.next();

    if(str.equals("exit")){

      break;

    }

    sb.append(str);

}

FileOutputStream fo=new FileOutputStream(f);

fo.write(sb.toString().getBytes());

fi.close();

fo.close();

三、文件的复制

1原理:

(1)读取需要复制的源文件的内容;

(2)创建目标文件;

(3)将从源文件中读取的数据写入目标文件中;

(4)关闭流。

2. 代码

//创建读流:读取源文件内容

File f=new File("e:\\1.txt");

FileInputStream fi=new FileInputStream(f);

byte[] bs=new byte[(int)f.length()];

fi.read(bs);

//创建目标文件

Scanner sc=new Scanner(System.in);

System.out.println("输入新的文件名:");

String filename=sc.next();

File fa=new File("e:\\"+filename+".txt");

if(!fa.exists()){

   fa.createNewFile();

}

//创建写流:将获取源文件的内容写入目标文件

FileOutputStream fo=new FileOutputStream(fa);

fo.write(bs);

//关闭资源

fo.close();

fi.close();

四、文件的剪切

1. 原理

(1)读取需要复制的源文件的内容;

(2)创建目标文件;

(3)将从源文件中读取的数据写入目标文件中;

(4)关闭流;

(5) 删除源文件。

2. 代码

//创建读流:读取源文件内容

File f=new File("e:\\1.txt");

FileInputStream fi=new FileInputStream(f);

byte[] bs=new byte[(int)f.length()];

fi.read(bs);

//创建目标文件

Scanner sc=new Scanner(System.in);

System.out.println("输入新的文件名:");

String filename=sc.next();

File fa=new File("e:\\"+filename+".txt");

if(!fa.exists()){

   fa.createNewFile();

}

//创建写流:将获取源文件的内容写入目标文件

FileOutputStream fo=new FileOutputStream(fa);

fo.write(bs);

//关闭资源

fo.close();

fi.close();

f.delete();

如果大家想浏览我的下一篇文章,请留言

此文章属于原创,不准随意转载:https://blog.csdn.net/LYQ2332826438

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

银色亡灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值