Java笔记_IO流_codeJeseanL

编码解码

String str = "我爱你们";
byte[] arr = str.getByte();
System.out.println(Arrays.toString(arr));
-----------------------------------------------------------
byte[] arr = {-51, -46, -80, -82, -60, -29, -61, -57};
String string = new String(arr);
System.out.println(string);

流输入输出

//输入流 / 输出流
InputStream/Reader  将数据输入到程序
OutputStream/Writer 输出数据到文本

//字节流 / 字符流
InputStream/Reader   OutputStream/Writer

//节点流 / 处理流
//1, 创建流对象(创建a.txt文件)
Writer w = new FileWriter("a.txt");
//2, 使用流中的方法(写入"你好"到a.txt文件)
w.write("你好"); 
//3, 关流(释放资源)
w.close();
//1, 创建流对象(读取a.txt文件)
Reader r = new FileReader("a.txt");
//2, 使用流中的方法(读取数据到...)
int i = r.read(); //read方法读一个字符数据
int j = r.read();
System.out.println(i); //数字
System.out.println((char)i); //字符
//3, 关流
r.close();
//读取全部数据
Reader r = new FileReader("a.txt");
while(true){
    int read = r.read();
    if(read == -1){
        break;
    }
    System.out.print((char)read);
}
//简化方法
int read;
while((read = r.read()) != -1){
    System.out.print((char)read);
}
r.close();
//读取多个数据
Reader r = new FileReader("a.txt");
char[] arr = new char[10]; //设置数组中的字符个数
r.read(arr); //读取字符到数组
System.out.println(Arrays.toString(arr));
//char[] ---> String
String str = new String(arr); //转换成字符串
System.out.println(str);
//读全部
while(true){
    int len = r.read(arr);
    if(len == -1){
        break;
    }
    String str = new String(arr, 0, len);
    System.out.println(str);
}
//读全部  简化
int len;
while((len = r.read(arr)) != -1){
    String string = new String(arr, 0, len);
    System.out.println(string);
}

r.close();

read() 和 read(数组) 的区别

//a.txt 中只有一个字符 爱 
Reader r = new FileReader("a.txt");
//read() ---> 读取一个字符, 返回这个字符的编号 ---> (char)
int read = r.read();
System.out.println(read); //29233
//read(数组) --->读取多个字符(数组长度), 返回读取有效个数 ----> new String(arr, 0, len) 读取0-len个
char[] arr = new char[1024];
int len = r.read(arr);
System.out.println(len); // 1个

r.close();

字节流/字符流 区别

//字符流 ---> 只适合操作文本, 操作非文本会使数据损坏
//字节流 ---> 非文本(视频, 图片, 音频)

字节流copy图片

InputStream r = new FileInputStream("美女.jpg");
OutputStream w = new FileOutStream("美女的副本.jpg");

byte[] arr = new byte[1024];
int len;
while((len = r.read(arr)) != -1){
    w.write(arr, 0, len);
}
r.close();
w.close();

字节流输出流(对文本支持不是很友好)

OutputStream os = new FileOutStream("a.txt");
//os.write(97);
os.write('9');
os.write('7');
//os.write("我喜欢你".getBytes());
os.close();

字节输入流(对文本支持不是很友好)

InputStream is = new FileInputStream("b.txt");
//int read1 = is.read();
//int read2 = is.read();
//System.out.println(new String(new byte[] {(byte)read1,(byte)read2}));
byte[] arr = new byte[1024];
int len;
while((len = is.read(arr) != -1)){   //读取依然有问题
    String string = new String(arr, 0, len);
    System.out.print(string);
}
is.close();

你可能感兴趣的:(Java笔记_IO流_codeJeseanL)