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();

    }
}
相关推荐
烟锁池塘柳08 分钟前
【已解决,亲测有效】解决使用Python Matplotlib库绘制图表中出现中文乱码(中文显示为框)的问题的方法
开发语言·python·matplotlib
周小码11 分钟前
llama-stack实战:Python构建Llama应用的可组合开发框架(8k星)
开发语言·python·llama
pianmian112 分钟前
Spring 项目骨架
java·后端·spring
麦兜*17 分钟前
Docker 部署 MongoDB:单节点与副本集的最佳实践
java·spring boot·mongodb·spring cloud·docker·容器·maven
小小怪KO20 分钟前
分布式锁解决集群下一人一单超卖问题
java·分布式·tomcat·后端开发·实习·黑马点评
UrSpecial24 分钟前
Linux线程
linux·开发语言·c++
郝学胜-神的一滴24 分钟前
深入浅出 C++20:新特性与实践
开发语言·c++·程序人生·算法·c++20
智码看视界35 分钟前
老梁聊全栈系列:(阶段一)从单体到云原生的演进脉络
java·云原生·c5全栈
闪电麦坤9543 分钟前
C/C++项目练习:命令行记账本
开发语言·c++
kyle~1 小时前
python---PyInstaller(将Python脚本打包为可执行文件)
开发语言·前端·python·qt