A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 我是楠楠 于 2018-3-15 14:03 编辑

第2章 字符流与字节流


1.1 概述
IO流分类:
    流向
             输入流        读取数据        FileReader        Reader
             输出流        写出数据        FileWriter        Writer
     数据类型
              字节流        
                       字节输入流   读取数据        InputStream
                      字节输出流   写出数据        OutputStream
                   字符流
                       字符输入流  读取数据        Reader
                    字符输出流  写出数据        Writer
1.2 利用字符复制文本文件
利用字符流将当前工程下的IODemo.java拷贝到d的a文件夹下
1.2.1 案例代码
[AppleScript] 纯文本查看 复制代码
package com.itheima_02;
 
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
/*
 * 使用字符流复制文本文件
 *
 * 数据源        IODemo.java
 * 目的地        d:\\IODemo.java
 
 *
 */
public class FileCopyDemo {
public static void main(String[] args) throws IOException  {
//创建字符输入流对象
FileReader fr = new FileReader("IODemo.java");
//创建字符输出流对象
FileWriter fw = new FileWriter("d:\\IODemo.java");
//一次读写一个字符
/*int ch;
while((ch = fr.read()) != -1) {
fw.write(ch);
fw.flush();
}*/
//一次读写一个字符数组
int len;//用于存储读到的字符个数
char[] chs = new char[1024];
while((len = fr.read(chs)) != -1) {
fw.write(chs,0,len);
fw.flush();
}
//释放资源
fw.close();
fr.close();
}
}

1.2.2 字符流复制图片的问题解析
1.3 利用字节流复制文本文件
利用字节流将当前工程下的IODemo.java拷贝到d盘下
1.3.1 案例代码十
[AppleScript] 纯文本查看 复制代码
    package com.itheima_03;
 
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
 
/*
 * 使用字节流复制文本文件
 *
 * 数据源        IODemo.java
 * 目的地        d:\\a\\IODemo.java
 *
 
 */
public class FileCopyDemo {
public static void main(String[] args) throws IOException  {
//创建字节输入流对象
FileInputStream fis = new FileInputStream("IODemo.java");
//创建字节输出流对象
FileOutputStream fos = new FileOutputStream("d:\\a\\IODemo.java");
//一次读写一个字节
/*int by;
while((by = fis.read()) != -1) {
fos.write(by);
}*/
//一次读写一个字节数组
int len;//存储读到的字节个数
byte[] bys = new byte[1024];
while((len = fis.read(bys)) != -1) {
fos.write(bys,0,len);
}
//释放资源
fos.close();
fis.close();
}
}

1.4 复制图片
字节流可以操作所有类型的文件,因为所有的文件在计算机中都是以字节形式存储
而字符流只能用来操作纯文本类型的文件,不能操作字节类型的文件
1.4.1 案例代码十一
[AppleScript] 纯文本查看 复制代码
package com.itheima_04;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
/*
 * 分别使用字符流和字节流复制图片
 *
 * 二进制文件只能使用字节流进行复制(使用windows自带记事本打开读不懂的)
 * 文本文件的复制即可使用字符流,也可以使用字节流
 *
 */
public class CopyImage {
public static void main(String[] args) throws IOException  {
//method();
//创建字节输入流对象
FileInputStream fis = new FileInputStream("传智学院.jpg");
//创建字节输出流对象
FileOutputStream fos = new FileOutputStream("d:\\传智学院.jpg");
//一次读写一个字节数组
int len;//用于存储读到的字节个数
byte[] bys = new byte[1024];
while((len = fis.read(bys)) != -1) {
fos.write(bys,0,len);
}
//释放资源
fos.close();
fis.close();
}
 
private static void method() throws FileNotFoundException, IOException {
//创建字符输入流对象
FileReader fr = new FileReader("传智学院.jpg");
//创建字符输出流对象
FileWriter fw = new FileWriter("d:\\传智学院.jpg");
//一次读写一个字符数组
int len;//用于存储读到的字符个数
char[] chs = new char[1024];
while((len = fr.read(chs)) != -1) {
fw.write(chs,0,len);
fw.flush();
}
//释放资源
fw.close();
fr.close();
}
}
更多
第一天
传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马