java io与io流体系 文件字节输入&输出流

java IO原理

io流用来处理设备之间的数据传输
Java程序中,对于数据 的输入/输出操作以”流(Stream)”的方式进行
java.io包下提供了各种“流”类和接口,用以获取不同种类 的数据,并通过标准的方法输入或输出数据

输入input:读取外部数据(磁盘,光盘等存储设备的数据)到程序(内存)中
输出output:将程序(内存)数据输出到磁盘,光盘等存储设备中。

流的分类
java io与io流体系 文件字节输入&输出流_第1张图片
io流操作体系
java io与io流体系 文件字节输入&输出流_第2张图片
文件字节输入流

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Test1 {
     
    public static void main(String[] args) {
     
        Test1.testFileInputStream();

    }

        public static void testFileInputStream(){
     
            try {
     
                FileInputStream in = new FileInputStream("D:\\Test\\abc\\tt1.txt");//需要捕获异常

                byte b[] = new byte[10];//设置一个byte数组接收读取的文件的内容

                int len = 0;//设置一个读取数据的长度

                //  in.read(b);//in.read()方法有一个返回值,返回值时读取的数据长度,如果读到最后一个数据还会向后读一个,这时返回值时-1
                //也就意味着当in.read()返回值是-1的时候,整个文件读取完毕。

                while ((len = in.read(b)) != -1) {
     
                    System.out.println(new String(b, 0, len));
                    //new String(b,0,len) 参数1是缓冲的数组,参数w是从数组的那个位置开始转换,参数三是总共转换几个字节

                }

                System.out.println(new String(b));

                in.close();//如果流使用之后一定要关闭
            } catch (Exception e) {
     
                e.printStackTrace();
            }

        }
}


运行结果:
kiana
kiana     


文件字节输出流

/*文件字节输出流*/
        public static void FileOutputStream(){
     
            try {
     
                FileOutputStream out=new FileOutputStream("D:\\Test\\abc\\tt4.txt");//如果没有此文件会自动创建。
                String str="魔法少女TeRiRi世界第一可爱";
                out.write(str.getBytes());//把数据写到内存
                out.flush();//把内存中的数据写到硬盘
                out.close();//关闭流
            } catch (Exception e) {
     
                e.printStackTrace();
            }
        }

复制文件到指定位置

import java.io.*;

public class Tes {
     
    public static void main(String[] args) {
     
        Tes.copyFile("D:/Test/abc/tt1.txt","D:/Test/abc/cc/tt1.txt");


    }
    //复制文件到指定位置
    public static void copyFile(String inPath,String outPath){
     
        try {
     
            FileInputStream in=new FileInputStream(inPath);//读取的源文件
            //  FileInputStream in=new FileInputStream(D:/Test/abc/tt1.txt);   等效于这样写
            FileOutputStream out=new FileOutputStream(outPath);//复制到哪里
            byte b[]=new byte[100];
            int len=0;

            while((len=in.read(b))!=-1){
     
                out.write(b,0,len);//参数一是写的缓冲数组,参数二从数组的那个位置开始,参数三获取数组的总长度
            }
            out.flush();//把内存数据刷到硬盘
            out.close();
            in.close();

        } catch (Exception e) {
     
            e.printStackTrace();
        }
    }
}
//注意:文件字节流非常通用,可以用来操作字符的文档,还可以操作任何其他类型的文件(图片,压缩包等)
//引用字节流时是直接使用二进制

你可能感兴趣的:(java入门编程,java)