首页 > 学院 > 开发设计 > 正文

Java从零开始学三十五(JAVA IO- 字节流)

2019-11-14 23:07:00
字体:
来源:转载
供稿:网友
java从零开始学三十五(JAVA IO- 字节流)一、字节流FileOutputStream是OutputStream 的直接子类FileInputStream也是InputStream的直接子类二、文本文件的读写2.1、字节输入流

Test.txt文件内容abcdefg
package com.pb.io;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;/* * FileInputStreamDemo读取文件 */public class FileInputStreamDemo1 {    public static void main(String[] args) {        //1.声明文件对象,也可以跳过此步直接在第2步中写        File f=new File("d:"+File.separator+"test"+File.separator+"test.txt");         //FileInputStream fis=new FileInputStream("d:/test/hello.txt");        try {            //2.创建FileInputStream对象并将file对象传入            FileInputStream fis=new FileInputStream(f);            //3.定义整型变量用来存放内容            int date;            //4先查看文件可以读取的字节类available()方法获取文件的字节数            System.out.PRintln("可读取的字节数:"+fis.available());            System.out.println("=========开始读取文件==========");            //5读取文件read()方法            System.out.println("========没有转换前输出=======");            while((date=fis.read())!=-1){   //!=-1说明文件还有内容=-1时,就说明文件内容读完结束                                System.out.println(date+"/t");            }            System.out.println("=======文件读取结束=========");            //关闭流            fis.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }            }}

结果:

可读取的字节数:7=========开始读取文件==================没有转换前输出=======97    98    99    100    101    102    103    =======文件读取结束=========

结果:并不是文件中的内容

修改上面的文件:

package com.pb.io;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;/* * FileInputStreamDemo读取文件 */public class FileInputStreamDemo1 {    public static void main(String[] args) {        //1.声明文件对象,也可以跳过此步直接在第2步中写        File f=new File("d:"+File.separator+"test"+File.separator+"test.txt");         //FileInputStream fis=new FileInputStream("d:/test/hello.txt");        try {            //2.创建FileInputStream对象并将file对象传入            FileInputStream fis=new FileInputStream(f);            //3.定义整型变量用来存放内容            int date;            //4先查看文件可以读取的字节类available()方法获取文件的字节数            System.out.println("可读取的字节数:"+fis.available());            System.out.println("=========开始读取文件==========");            //5读取文件read()方法            System.out.println("========转换后转出=======");            while((date=fis.read())!=-1){   //!=-1说明文件还有内容=-1时,就说明文件内容读完结束                char c=(char)date;                System.out.println(c+"/t");            }            System.out.println("=======文件读取结束=========");            //6.关闭流            fis.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }            }}

结果:

可读取的字节数:7=========开始读取文件==================转换后转出=======a    b    c    d    e    f    g    =======文件读取结束=========

小结:FileInputStream

1.read()读取内容,是返回int值

2.需要转换字符

3.read()方法是单程的,

4.一定要关闭流

2.2、字节输出流

package com.pb.io;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Scanner;public class FileOutputStreamDemo1 {    public static void main(String[] args) {                try {            //1.实例化FileOutputStream对象,在文件的末尾追加内容            FileOutputStream fos=new FileOutputStream("d:/test/test.txt",true);            //2.创建他写入的字符串            Scanner input=new Scanner(System.in);            System.out.println("请输入要写入文件的内容:");            String    str=input.next();                //3.将内容转换为字节数组            byte[] bytes=str.getBytes();            //4.将内容写入            fos.write(bytes,0,bytes.length);  //3个参数的方法,从0开始到数组结束的全部写入            System.out.println("文件写入结束!");            //5.关闭流            fos.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }            }}

结果:

请输入要写入文件的内容:输入e结束好好学习,天天向上 hello java!文件写入结束!

test.txt

abcdefg好好学习,天天向上

在进行写操作时,如果文件不存在,将自动创建这个文件,如果上面没test.txt,将会自动创建这个文件,可以试下,将文件删除再运行

三、综合使用
package pb.io.file;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Scanner;/** * 拷贝文件 * @author 北大青鸟 * */public class CopyFile {    public static void main(String[] args) {        Scanner input=new Scanner(System.in);        int date=0;        System.out.print("请输入您要拷贝的源文件:");        String file1=input.next();        System.out.print("请输入您要拷贝的目标位置:");        String file2=input.next();        try {            FileInputStream fis = new FileInputStream(file1);            FileOutputStream fos = new FileOutputStream(file2);            while((date=fis.read())!=-1){//读取文件                char c=(char)date;          fos.write(c);                }            fis.close();            fos.close();            System.out.println("拷贝成功!");        } catch (FileNotFoundException e) {            System.out.println("源文件未找到!");        } catch (IOException ex) {            System.out.println(ex.toString());        }        }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表