黑马程序员___io概述
来源:互联网 发布:文件夹自动同步软件 编辑:程序博客网 时间:2024/05/04 21:37
------- android培训、java培训、期待与您交流! --------
1.IO流的概述
IO流用来处理设备之间的数据传输
流按操作数据分为两种:字节流与字符流
字符流:用于专门处理字符文件数据(文本文件,记事本可以打开观看到了)
操作字符的,计算机的存储中,两个字节,表示一个字符
汉字两个字节表示,因此使用字符流操作文本文件,方便简单
这个字符流使用的时候,默认的去查询本机默认编码表 GBK
字节流:每次做操作一个字节,8个二进制为
这个流对象,可以操作任意类型文件
计算机的远程操作过程中,用的都是字节流
不查询编码表
IO流技术,不能操作文件夹,只能操作文件
2. IO流分类
按照流向分,输出流Output,输入流Input
向硬盘中写一个文件,输出流,文件数据目的
读取硬盘中的一个文件,输入流,文件数据源
按照操作文件类型分,字符流 -- 文本,字节流 -- 任意文件
字符流:
字符输出流:抽象基类:Writer -- 方法,写的方法 write
字符输入流: 抽象基类:Reader -- 方法,读的方法 read
字节流:
字节输出流:抽象基类:OutputStream -- 方法,写的方法 write
字节输入流:抽象基类:InputStream -- 方法,读的方法 read
3. 字符输入流对象
读取的方法
int read() 读取单个字符,返回int值
读取一个字符,返回ASCII码值,read()方法,执行一次,自动向后读一个
read()方法,读取到文件结尾返回-1
int read(char[] ch)读取方法的时候,传递一个字符数组
字符数组,缓冲区
数组,read()读取到的字符,装在数组中
int返回值,什么意思?读取到的有效的字符个数
数组缓冲,读取效率跟高,推荐使用数组缓冲读取文本文件
字符流只能操作文本文档,字节流可以操作所有的文件;但是他们之间的用法基本一样;
/*
* 复制文本文件第二种方式,读一个数组,写一个数组.
*/
import java.io.*;
public class CopyText1 {
public static void main(String[] args) {
long s = System.currentTimeMillis();
FileReader fr = null;
FileWriter fw = null;
try{
fr = new FileReader("要复制的文件");
fw = new FileWriter("复制结果的文件");
//定义数组,进行缓冲0
char[] buf = new char[1024];
int len = 0 ;
while((len = fr.read(buf))!=-1){
fw.write(buf, 0, len);
fw.flush();}
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("文件复制失败");
}finally{
try{
if(fr!=null)
fr.close();
}catch(IOException e){
throw new RuntimeException("文件读取关闭失败");}}
long e = System.currentTimeMillis();
System.out.println(e-s);}}
4.字节流和字符流之间的转换
关键的方法就是InputStreamReader是字节流通向字符流的桥梁
OutputStreamWriter是字符流通向字节流的桥梁
package cn.itcast.iostream;
/*
* 读取一个文件,文本,将文本中的数据转成大写,输出控制台
* 数据源,文本文件,操作文本文件的FileInputStream
*
* 数据目的,控制台 System.out OutputStream
*
* 读取一个文本,将数据转成大写,输出到另一个文本文件
*/
import java.io.*;
public class TranseDemo4 {
public static void main(String[] args) throws IOException{
//字节输入流包装一个文件
InputStream fis = new FileInputStream("c:\\w.html");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bfr = new BufferedReader(isr);
//数据目的
OutputStream out = System.out;
OutputStreamWriter osw = new OutputStreamWriter(out);
BufferedWriter bfw = new BufferedWriter(osw);
String line = null;
while((line = bfr.readLine())!=null){
bfw.write(line.toUpperCase());
bfw.newLine();
bfw.flush();}
fis.close();}}
-------- android培训、java培训、期待与您交流! ----------
- 黑马程序员___io概述
- 黑马程序员_Map概述
- 黑马程序员_JavaScript概述
- 黑马程序员-GUI概述
- 黑马程序员-HTML概述
- 黑马程序员-JAVA概述
- 黑马程序员 Java 概述
- 黑马程序员_Java概述
- 黑马程序员-Java 概述
- 黑马程序员-JAVA概述
- 黑马程序员----Java概述
- 黑马程序员 XAML概述
- 《黑马程序员》socket---概述
- 黑马程序员_java概述
- 黑马程序员_01JAVA概述
- 黑马程序员_java概述
- 黑马程序员_java概述
- 黑马程序员_Java概述
- 【Android源码编译】使用repo工具下载获取android源码
- thinkphp 中 使用PHPMailer发送邮件
- python中的字符串连接
- db2 目录结构
- OpenSees开发(一)windows 上编译opensees (使用vs2005)
- 黑马程序员___io概述
- 看来自己语法还真挫
- IP地址排序问题
- JSP乱码解决方法
- leetcode:Gas Station
- 暮夜
- iOS Storyboard构造自定义表格UITableView
- Ubuntu 杂记录
- 关于最近怎么用搜索