Java核心技术之 IO

java核心技术-IO

输入输出(IO流)流程图:

mark

字节流 :一切皆为字节

1)字节输出流 (OutputStream)
Java.io.OutputStream;

方法:

1public void close();
2) public void flush();
3) public abstract void write(int b);

FileOutputStream :向文件中写数据,继承自 outputStream ;文件字节输出流

把内存中的数据写入到硬盘文件中

构造方法: FileOutputStream extends OutputStream

FileOutputStream(string naem)
FIleoutPutstream( FIle file) ;

写入数据的原理(内存–》硬盘)
java程序–》JVM—>OS—>OS调用方法—>把数据写入到文件中

字节输出流的使用步骤:(重点)
1)创建对象 FileoutputStream对象,构造方法中传递写入数据的目的地
2) 调用Fileoutptstream对象的write,把数据写入到文件中
3) 释放资源

代码:
FileOutputStream fos=new FileOutputStream(“a.txt”);
fos.write(97);
fos.close();

文件存储的原理:

mark

一次写多个字节的方法:
1) public void write(byte[] b);

一次写多个字节,如果写的第一个字节是正数,显示的时候查ASCII码表
如果写的时候第一个字节是负数,那第一个字节会和第二个自己组成一个中午显示。
2) public void write(byte[] b int off,int len);

字节输出流的续写和换行:
FileoutputSteam(string name,boolean apped);
Fileoutputsteram(File file,boolean append);

append: 追加写的开关,为true时继续在文件的末尾追加数据

  FileOutputStream fos=new FileOutputStream("c.txt",true);
        for (int i = 0; i <10; i++) {
            fos.write("你好".getBytes());
            fos.write("\r\n".getBytes());
        }
        fos.close();

字节输入流:InputStream :所有字节输入流的超类(抽象类)

方法:
int read();
int red(byte[] b) ;

FileInputStream :文件字节输入流

构造方法:

FileInputStream(File file) 
FileInputStream(String name) 
FileInputStream(FileDescriptor fdObj)

构造方法的作用:
1)创建一个FileInputStream的对象
2)会把FileInputStream对象指定构造方法中读取的文件

读取数据的原理: (硬盘—》内存—)

java程序–》JVM—>OS–>调用系统方法–>读取文件

字节输入流的使用步骤:
1)创建对象 :FileInputStream,构造方法中绑定要读取的数据源
2)使用FileInputStream对象中的方法read,读取文件
3)释放资源

读取文件是一个重复的过程,可以用循环,电脑上不知道文件中有多少个字节,所有用while循环。
while循环介绍条件,读取到-1 结束

int len=0;
while((len=read())!=-1)
{
  sout(len);
}

1)fis.read(); //读取一个字节

mark

2)fis.read(byte[] b) ;//一次读取多个字节
明确俩件事情:
1)方法的参数byte[]的作用
2)方法返回值int是什么

mark

1)byte数组起到缓冲作用,存储每次读取到的多个字节。
2)数组的长度一般定义为1024 ,或者1024的整数倍

3)方法的返回子,每次读取到的有效字符个数

字节流操作 :文件复制

原理图:
mark

首先明确:
1)数据源
2)目的地

文件复制的步骤:
1)创建一个字节输入流对象,构造方法中绑定要读取的数据源
2)创建一个字节输出流对象,构造方法中绑定要写入的目的地
3)使用字节输入流对象中的方法,read读取文件
4)使用字节输出流中的write方法,把读取到的字节写入到目的文件中

释放资源:先关闭写的,再关闭读的。因为写完了一定读完了。

 FileInputStream fis=new FileInputStream("C:\\Users\\15209\\Pictures\\美食\\me.jpg");
        FileOutputStream fos=new FileOutputStream("C:\\Users\\15209\\Pictures\\电脑网站\\me.jpg");
        byte[] bytes=new byte[1024];
        int len=0;  //每次读取有效字节个数
        while((len=fis.read(bytes))!=-1)
        {
            fos.write(bytes,0,len);
        }
        fos.close();
        fis.close();

字符流:
一个中文:
GBK :占用俩个字节
UTF-8:占用三个字节

发布了96 篇原创文章 · 获赞 9 · 访问量 1863

猜你喜欢

转载自blog.csdn.net/qq_40905284/article/details/105381558