java------IO流

1.IO流常见应用场景

电脑是人们生活中常见的用品,当你把u盘里面的东西拷贝到你的电脑上,那么这中间涉及到输出和输入的过程,传输过程就像流水一般不停传送资源。这就是电脑读取数据的过程,这就是所谓的输入流

输出流也就是写数据的过程。

2.IO流相关介绍?

  • 什么是IO流?读取和存储数据的解决方案   其中I表示Input   O表示output   流向水一样的流动
  • IO流的作用    用于读写数据  
  • IO流按照流向可以分为哪几种?   可以分为输出流和输入流     输出流:程序------>文件     输入流:文件--------->程序
  • IO流按照操作文件的类型可以分为哪几种?可以分为两种   字节流和字符流    字节流可以操作所有类型的文件     字符流只可以操作文本文件
  • 什么是纯文本文件?    能用记事本打开的文件   比如.md   .txt   lrc  xml等文件

3.IO流体系

 

先介绍FileOutputStream:操作本地文件的字节输入流,可以把程序中的数据写到本地文件中。

 //创建对象    里面可以文件对象   注意一定要保证父级路径
FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\myoutputstream.txt");
//写出数据 到文件中会转换成Ascii码 out.write(97); //释放资源 out.close();

        FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\myoutput2.txt");
//        out.write(97);
//        out.write(98);
//        out.close();

        //第二种方式 一个数组直接写入
//        byte[] arr1 = {97,98,99,100,101};
//        out.write(arr1);
//        out.close();

        //第三种方式定义其数组长度
        byte[] arr1 = {97,98,99,100,101};
        out.write(arr1,0,2);
        out.close();
  //创建对象  进行换行操作
        FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\huanhang.txt");
        //写入数据
        String str = "lksnj";
        byte[] bytes = str.getBytes();
        out.write(bytes);
        //换行
        String r = "\r\n";
        byte[] bytes1 = r.getBytes();
        out.write(bytes1);

        String str2 = "666";
        byte[] bytes2 = str2.getBytes();
        out.write(bytes2);
        //关闭资源
        out.close();

//进行续写
FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\huanhang.txt",true);

输入流:就是读取数据

        
//
创建对象 FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt"); //开始读取数据 int read1 = in.read(); System.out.println((char)read1); int read2 = in.read(); System.out.println(read2); int read3 = in.read(); System.out.println(read3); //关闭资源 in.close();

 1 public class testfor {
 2     public static void main(String[] args) throws IOException {
 3         FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt");
 4         int b;
 5         while((b=in.read())!=-1){
 6             System.out.println((char)b);
 7         }
 8         in.close();
 9     }
10 }

既然可以读又可以写,那么是不是可以复制粘贴

public static void main(String[] args) throws IOException {
        FileInputStream in =new FileInputStream("D:\\work\\java基础\\IO\\a.txt");
        FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\b.txt");
        int b;
        while((b=in.read())!=-1){
            out.write(b);
        }
        out.close();
    }

 

//创建对象
        FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt");
        //写入数据
        byte[] bytes1= new byte[3];

        int len = in.read(bytes1);
        String s = new String(bytes1,0,len);
        System.out.println("字符串:"+s+"\t长度="+len);

        int len2 = in.read(bytes1);
        String s2 = new String(bytes1,0,len2);
        System.out.println("字符串:"+s2+"\t长度="+len2);

        int len3 = in.read(bytes1);
        String s3 = new String(bytes1,0,len3);
        System.out.println("字符串:"+s3+"\t长度="+len3);
        //释放资源
        in.close();
long start = System.currentTimeMillis();
FileInputStream in = new FileInputStream("D:\\work\\java基础\\IO\\a.txt");
FileOutputStream out = new FileOutputStream("D:\\work\\java基础\\IO\\d.txt");
byte[] bytes = new byte[1024 * 1024 * 5];
int b;
while((b=in.read(bytes))!=-1){
out.write(bytes,0,b);
}
out.close();
in.close();
long end = System.currentTimeMillis();
System.out.println("时间相差:"+(end-start));

 字符乱码

 //编码过程
        String str ="hello world  你好";
        byte[] bytes = str.getBytes();
        System.out.println(Arrays.toString(bytes));

        byte[] bytes2 = str.getBytes("GBK");
        System.out.println(Arrays.toString(bytes2));

        //解码过程
        String str1 = new String(bytes);
        System.out.println(str1);
        String str2 = new String(bytes,"GBK");
        System.out.println(str2);

 

 

 

 

 //创建对象
        FileReader fr = new FileReader("D:\\work\\java基础\\IO\\chinese2.txt");
        int ch;
        while((ch=fr.read())!=-1){
            System.out.print((char)ch);
        }


char[] chars = new char[2];
while((ch=fr.read(chars))!=-1){
System.out.println(new String(chars,0,ch));
}
 

 

 

        FileWriter fl = new FileWriter("D:\\work\\java基础\\IO\\filewrite.txt");
//        fl.write(97);
        fl.write("我爱中国");
        fl.close();

 

posted on 2024-02-06 17:44  无名之辈的ggb  阅读(3)  评论(0编辑  收藏  举报