Java I/O操作

1.字节流

字节流是处理字节数据的流,它主要用于处理二进制数据,如图片、音频、视频等。Java中的字节流主要包括InputStream和OutputStream两个抽象类,以及它们的各种实现类,如FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream等。

字节流的操作单位是字节,适用于处理所有类型的文件,包括文本文件(按字节读取或写入文本内容)和二进制文件(如图片、视频等)。
字节流读取文件:

Thread t1 = new Thread(() -> {
                try {
                    System.out.println(Thread.currentThread().getName());
                    BufferedInputStream bufferedInputStream = new BufferedInputStream(
                            new FileInputStream("/home/Code/Java/Test/file1.txt"), 1024);
                    byte[] bytes = new byte[1024];
                    int len = bufferedInputStream.read(bytes);
                    System.out.println(bytes.toString());
                } catch (IOException ioException) {
                    System.out.println(ioException);
                }finally{
                    bufferedInputStream.close();
                }

            });

2.字符流

字符流是处理字符数据的流,它主要用于处理文本数据。Java中的字符流主要包括Reader和Writer两个抽象类,以及它们的各种实现类,如FileReader、FileWriter、BufferedReader、BufferedWriter等。
字符流的操作单位是字符,因此它更适合处理文本文件。使用字符流处理文本文件时,可以自动处理文件的编码问题,使得程序更加健壮。

Thread t2 = new Thread(() -> {
                try {
                    System.out.println(Thread.currentThread().getName());
                    FileReader fr = new FileReader("/home/Code/Java/Test/input.txt");
                    BufferedReader br=new BufferedReader(fr);
                    String chs=br.readLine();
                    System.out.println(chs);
                } catch (Exception e) {
                    System.out.println(e);
                }finally{
                    br.close();
                    fr.close();
                }
            });

处理的是文本数据,并且希望自动处理编码问题,那么应该选择字符流。处理的是二进制数据,或者需要对数据的每一位进行精确控制,那么应该选择字节流。

3.读取控制台输入

3.1 Scanner

Scanner 是 Java 中的一个实用类,它位于 java.util 包中,用于简化基本类型和字符串的输入。Scanner 类可以解析基本类型和字符串,通过使用正则表达式分隔输入数据。
要使用 Scanner,你需要首先创建它的一个实例,通常与某种输入源(如键盘输入、文件等)相关联。最常见的用法是与 System.in 关联,以从键盘读取输入。

import java.util.Scanner;  

public class ScannerExample {  
    public static void main(String[] args) {  
        // 创建一个 Scanner 对象,与 System.in 关联  
        Scanner scanner = new Scanner(System.in);  

        // 读取一个整数  
        System.out.print("请输入一个整数: ");  
        int number = scanner.nextInt();  
        System.out.println("你输入的整数是: " + number);  

        // 读取一个浮点数  
        System.out.print("请输入一个浮点数: ");  
        double doubleNumber = scanner.nextDouble();  
        System.out.println("你输入的浮点数是: " + doubleNumber);  

        // 读取一个字符串  
        System.out.print("请输入一个字符串: ");  
        String text = scanner.next();  
        System.out.println("你输入的字符串是: " + text);  

        // 读取一行文本(包含空格)  
        System.out.print("请输入一行文本: ");  
        String line = scanner.nextLine();  
        System.out.println("你输入的一行文本是: " + line);  

        // 关闭 Scanner 对象  
        scanner.close();  
    }  
}

3.2 输入流缓存

InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader br = new BufferedReader(isr);
            String input = br.readLine();
            String[] pars=input.split(" ");
            ArrayList<Integer> als=new ArrayList<>();
            for(String par : pars){
            als.add(Integer.parseInt(par));
            }
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇