Java-IO流

简介: IO流

字节输入流

==Inputstream==

package com.bilibili;

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/7 15:19
 */
public class Main {
   
    public static void main(String[] args) {
   

        String path = "C:" + File.separator + "Users" + File.separator + "i'li'ke'stay"+File.separator + "Desktop"+File.separator + "java_IO_test" + File.separator + "hello.txt";

        try(FileInputStream stream = new FileInputStream(path)) {
   

            //字节流

            byte[] b1 = new byte[stream.available()];
            //返回可读字节
            stream.read(b1,0,3);

            //仅限于纯文本文件,其他的可能会乱码
            System.out.println(stream.available());
            System.out.println(new String(b1));


            //跳过指定字节数,这个流是一次性的,不能反向
            stream.skip(4);
            System.out.println((char) stream.read());

        }catch (IOException e) {
   
                e.printStackTrace();
            }
        }
}

字节输出流

package com.bilibili;

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/7 15:19
 */
public class Main {
   
    public static void main(String[] args) {
   

        String path = "C:" + File.separator + "Users" + File.separator + "i'li'ke'stay"+File.separator + "Desktop"+File.separator + "java_IO_test" + File.separator + "hello.txt";

        try(FileOutputStream stream = new FileOutputStream(path,true)) {
   
            //初始化时,加入true ,表示追加模式

            //字节流

            stream.write("hello,world!".getBytes(),3,3);
            //刷新操作,将缓冲区数据写入指定路径,立即生效
            stream.flush();

        }catch (IOException e) {
   
                e.printStackTrace();
            }
        }
}

字节流实现文件拷贝

package com.bilibili;

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/7 15:19
 */
public class Main {
   
    public static void main(String[] args) {
   

        String path = "D:" + File.separator + "Download" + File.separator + "NeverBeFar.mp4";

        try (FileInputStream input = new FileInputStream(path)) {
   
            //创建输入输出流
            FileOutputStream output = new FileOutputStream("copy.mp4");

           byte[] buffer = new byte[1024];
           int len;
           while ((len = input.read(buffer)) != -1){
   
               output.write(buffer, 0, len);
           }

           //大小一样,正常执行,拷贝完成

        } catch (FileNotFoundException e) {
   
            e.printStackTrace();
        } catch (IOException e) {
   
            e.printStackTrace();
        }
    }
}



字符输入流

package com.bilibili;

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/7 15:19
 */
public class Main {
   
    public static void main(String[] args) {
   

       //字符流,只适合读取纯文本文件,因为是以一个具体的字符读取,其他类型不适用

        String path = "C:" + File.separator + "Users" + File.separator + "i'li'ke'stay"+File.separator + "Desktop"+File.separator + "java_IO_test" + File.separator + "hello.txt";

        try(FileReader reader = new FileReader(path)) {
   
            //读取一个字符
            System.out.println((char) reader.read());

            System.out.println((char) reader.read());


        } catch (FileNotFoundException e) {
   
            e.printStackTrace();
        } catch (IOException e) {
   
            e.printStackTrace();
        }
    }
}

字符输出流

package com.bilibili;

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/7 15:19
 */
public class Main {
   
    public static void main(String[] args) {
   

       //字符流,只适合读取纯文本文件,因为是以一个具体的字符读取,其他类型不适用

        String path = "C:" + File.separator + "Users" + File.separator + "i'li'ke'stay"+File.separator + "Desktop"+File.separator + "java_IO_test" + File.separator + "hello.txt";

        try(FileWriter writer = new FileWriter(path,true)) {
   
            //以字符作为操作单位
            writer.write("Hello World!");
            writer.append("hello,").append("world");
            writer.flush();
        } catch (IOException e) {
   
            e.printStackTrace();
        }
    }
}


字符流拷贝

package com.bilibili;

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author WangYH
 * @version 2021.1.3
 * @date 2023/4/7 15:19
 */
public class Main {
   
    public static void main(String[] args) {
   

       //字符流,只适合读取纯文本文件,因为是以一个具体的字符读取,其他类型不适用

        String path = "C:" + File.separator + "Users" + File.separator + "i'li'ke'stay"+File.separator + "Desktop"+File.separator + "java_IO_test" + File.separator + "hello.txt";

       try(FileReader reader = new FileReader(path)) {
   
         FileWriter writer = new FileWriter("copy.txt");
         char[] ch = new char[3];
         int len = reader.read(ch);
         while (len != -1) {
   
             //这里输出一定要按实际长度来复制,不要定义一个固定长度
             writer.write(ch, 0, len);
             len = reader.read(ch);
         }
         writer.close();
         reader.close();
       } catch (FileNotFoundException e) {
   
           e.printStackTrace();
       } catch (IOException e) {
   
           e.printStackTrace();
       }
    }
}
目录
相关文章
|
8月前
|
Java
Java IO流各场景详解及使用
Java IO流各场景详解及使用
59 0
|
2天前
|
Java
Java的IO流
Java的IO流
14 0
|
2天前
|
Java Linux
|
5月前
|
缓存 Java 开发者
|
7月前
|
存储 Java 数据处理
Java IO流
Java I/O(Input/Output)流是Java中处理输入和输出的机制。它提供了一种统一的方式来读取和写入各种类型的数据,包括字节、字符、对象等。I/O流是Java程序与外部世界进行交互的关键组件之一。Java I/O流分为两类:字节流(Byte Streams)和字符流(Character Streams)。此外,Java还提供了一系列其他类型的流,如对象流(ObjectStreams)、管道流(PipeStreams)等,用于处理特定的数据类型或应用场景。
31 0
|
8月前
|
Java Linux Android开发
java中iO流
java中iO流
51 0
|
10月前
|
Java 数据处理 开发者
java IO流
Java I/O流是指将数据从一个源(如文件、网络)读取到内存中,或将数据从内存中写入到一个目标(如文件、网络)的流程。Java I/O流包括了字节流和字符流两种类型,其中字节流处理单个字节(8位)的数据,字符流处理Unicode字符的数据(可以看作是由多个字节组成的数据)。 Java I/O流的类库包括了许多实现类,如FileInputStream、FileOutputStream、BufferedReader、BufferedWriter等,它们都有其特定的用途和使用场景。Java I/O流的设计目的是为了方便开发者进行数据的读取和写入操作,提高程序的效率和可读性。 Java I/O流
57 0
|
11月前
|
缓存 Java
Java io流 详解
Java io流 详解
76 0
|
存储 设计模式 Java
Java IO流详解
Java IO流详解
135 0
|
Java
java io流
java io流
88 0