java 基础 IO字符流

1.汉字存储占多少字节:

复制代码
public class IoTest {
    public static void main(String[] args) {

        String str = "abcd";

        String str1 = "吴危险学java";

        System.out.println("字符串转为byte数组:" + Arrays.toString(str.getBytes()));
        System.out.println(Arrays.toString(str1.getBytes(StandardCharsets.UTF_8)));

    }
}

2.编码和解码:

复制代码
public class IoTest {
    public static void main(String[] args) {
   
        String s="abcd";
        //我们要把abcd,装入字节数组中
        byte[] bytes = s.getBytes(StandardCharsets.UTF_8);        
        System.out.println(Arrays.toString(bytes));    
       //将byte字节数组,转成字符串类型    
        System.out.println(new String(bytes));
    }
}

3.字符流:

复制代码
package login;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;

/*
将字符串转成字节
 */
public class IoTest {
    public static void main(String[] args) throws IOException {


        OutputStreamWriter outputStreamWriter = new
                OutputStreamWriter(new FileOutputStream("C:\\Users\\Administrator\\IdeaProjects\\mykt\\write.txt"));
        outputStreamWriter.write("已经开始有点晕了");

        System.out.println("写入数据成功");
        outputStreamWriter.close();

        System.out.println("--------------------------");
        System.out.println("开始读取数据");

        InputStreamReader inputStreamReader = new
                InputStreamReader(new FileInputStream("C:\\Users\\Administrator\\IdeaProjects\\mykt\\write.txt"), "utf-8");
        char[] charArr = new char[1024];
        int len;
        while ((len = inputStreamReader.read(charArr)) != -1) {
            System.out.println(new String(charArr, 0, len));

        }
        inputStreamReader.close();
    }
}

写入数据总结:

首先new 出fileoutputstream(路径),可不必new出实例对象,直接作为下面的参数

再new outputstreamwriter()再将第一步new的fileoutputstream(路径)

new outputstreamwriter(new的fileoutputstream(路径)),new出实例对象后

.出write()方法,括号内即可写要写入的数据,最后一步,用实例对象,关闭资源

读取数据总结:

首先new 出fileinputstream(路径),可不必new出实例对象,直接作为下面的参数

再new inputstreamreader()再将第一步new的fileinputstream(路径)

new inputstreamreader(new的fileinputstream(路径)) new出实例对象后

用实例对象.出read()方法,该方法若没有读取到数据返回值为-1,可用这个返回值,做循环条件,再创建整形变量,len,来计算数据长度

字节流<字符流

4.字符流5种写入方式:

5.字符流读取数据:

6.数组转为字符串类型:Array.toString(某种类型的数组)

复制代码
package login;

import java.util.Arrays;

public class Test2 {
    public static void main(String[] args) {
        char[] chars={'2','2','4','5'};
        int[] intArr={1,2,34,5,6,7};
        
        System.out.println(Arrays.toString(chars));
        System.out.println(Arrays.toString(intArr));
    }
}

7.FileReader类读取数据:

复制代码
package login;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Test15 {
    public static void main(String[] args) throws IOException {
        FileReader fileReader = new FileReader("C:\\Users\\Administrator\\IdeaProjects\\mykt\\test14.txt");
        int len;
        char[] chars = new char[1024];
        while((len= fileReader.read(chars))!=-1){
            System.out.println(new String(chars,0,len));
        }
        fileReader.close();
    }
}

8.FileWriter类写入数据:

复制代码
package login;

import java.io.*;

public class Test15 {
    public static void main(String[] args) throws IOException {
        FileWriter fileWriter = new FileWriter("C:\\Users\\Administrator\\IdeaProjects\\mykt\\test15.txt");

        fileWriter.write("可恶之前学的,不如后面的这好用");  
    }
}

9.字符缓冲流:

复制代码
package login;

import java.io.*;

public class Test15 {

    public static void main(String[] args) throws IOException {

        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\IdeaProjects\\mykt\\test15.txt"));
        //每次以8k缓冲容量大小写入数据到磁盘中
        bufferedWriter.write("hhhhhhhhh");
        bufferedWriter.close();


        BufferedReader bufferedReader =
                new BufferedReader(new FileReader("C:\\Users\\Administrator\\IdeaProjects\\mykt\\test15.txt"));
        char[] chars = new char[1024];
        int len;
        while((len=bufferedReader.read(chars))!=-1){
            System.out.println(new String(chars,0,len));
        }
        bufferedReader.close();


    }
}

10.字符缓冲流换行操作

写入换行:newLine()

复制代码
package login;

import java.io.*;

public class Test15 {

    public static void main(String[] args) throws IOException {

        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\IdeaProjects\\mykt\\test15.txt"));
        //每次以8k缓冲容量大小写入数据到磁盘中
        for (int i = 0; i < 10; i++) {
            bufferedWriter.write("第"+i+"行");
            bufferedWriter.newLine();
        }

        bufferedWriter.close();


        BufferedReader bufferedReader =
                new BufferedReader(new FileReader("C:\\Users\\Administrator\\IdeaProjects\\mykt\\test15.txt"));
        char[] chars = new char[1024];
        int len;
        while((len=bufferedReader.read(chars))!=-1){
            System.out.println(new String(chars,0,len));
        }
        bufferedReader.close();


    }
}

读取换行:readLine()

复制代码
package login;

import java.io.*;

public class Test15 {

    public static void main(String[] args) throws IOException {

//        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\IdeaProjects\\mykt\\test15.txt"));
//        //每次以8k缓冲容量大小写入数据到磁盘中
//        for (int i = 0; i < 10; i++) {
//            bufferedWriter.write("第"+i+"行");
//            bufferedWriter.newLine();
//        }
//
//        bufferedWriter.close();


        BufferedReader bufferedReader =
                new BufferedReader(new FileReader("C:\\Users\\Administrator\\IdeaProjects\\mykt\\test15.txt"));
       String s;
        while((s=bufferedReader.readLine())!=null){
            System.out.println(s);
       }
        bufferedReader.close();

    }
}

11.拷贝复制java文件:

复制代码
package login;

import java.io.*;

public class Test15 {
    /*
    将E:\wwx\xx\目录下的Student.java复制到E:\wwx\recieve中
     */
    public static void main(String[] args) throws IOException {

        BufferedReader bufferedReader = new BufferedReader(new FileReader("E:\\wwx\\xx\\Student.java"));

        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("E:\\wwx\\recieve\\Student.java"));

        String s;
        while ((s = bufferedReader.readLine()) != null) {
            bufferedWriter.write(s);
            bufferedWriter.newLine();//该方法会根据电脑系统自动换行
        }
        bufferedReader.close();
        bufferedWriter.close();

    }
}
相关推荐
白色的北极熊14 分钟前
c语言 输出菱形字符串
c语言·开发语言
2501_9304724424 分钟前
云安全自查清单:用腾讯云助手 30 分钟完成一次权限与密钥体检
java·腾讯云
学习智者40 分钟前
《玄》IDE v3.6.3重磅发布:全功能修复与性能飞跃
开发语言·c++·ide·算法·中文语言 玄
奔跑吧树袋熊1 小时前
多租户隔离该做到哪一层:从连接池到 ORM 的取舍
开发语言·数据库·oracle·系统架构
letisgo51 小时前
JAVA 高级进阶05篇《Spring容器机制:Bean生命周期与三级缓存全解》
java·spring·面试·ioc·源码分析
岁月如歌77861 小时前
分布式锁完全指南:从数据库到 Redisson 的演进
java·后端·架构
大江东去浪淘尽千古风流人物1 小时前
【LoMa】局部特征匹配重访:从LoMa-B到旋转不变LoMa-R的架构与工程实践
开发语言·深度学习·计算机视觉·r语言·视觉定位·sfm·局部特征匹配
菜鸟~noob2331 小时前
【电子战】测向精度极限——克拉美-罗下限(CRLB)与误差分析【含matlab代码】
开发语言·matlab
m0_734571761 小时前
深入理解C++ 析构函数<二>析构顺序
开发语言·c++
AI深栈1 小时前
第 8 章 · Tool Calling 与 Tool Search
java·人工智能