IO流[字符和字节的读取]

1、IO流用来处理设备之间的数据传输。

2、Java对数据的操作是通过流的方式。

3、Java用于操作流的对象都封装在IO包中。

4、流按操作数据分为两种:字节流与字符流。

5、流按流向分为:输入流,输出流。

字符流的抽象基类

Reader,Writer

字节流的抽象基类

InputStrea,OutputStream

注意:由这四个类派生出来的子类名称都是以其父类名作为子类明的后缀。

package TestDemo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

/**
 * 字符的 输入和输出
 * @author Mine
 *
 */
public class RWtest {
        public  static void main(String[] args){
            StringBuffer buffer=new StringBuffer();//缓冲区
              /*输入流*/
            Reader reader=null;
            try {
                //1.打开流
                reader=new FileReader("D:\\test\\one.txt");
                //2.读
                char [] ch=new char[128];//字符缓冲区
                int len;
                do{
                        len=reader.read(ch);
                        if(len==-1){
                            break;
                        }else{
                            buffer.append(new String(ch,0,len));//否则就拼接
                        }
                }while(len!=-1);
                System.out.println(buffer.toString());
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                //3.关闭流
                if(reader!=null){
                    try {
                        reader.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }

            /*输出流*/
            Writer writer=null;
            File file=new File("D:\\test\\Dmeo\\three.txt");
            if(!file.getParentFile().exists()){//测试此抽象路径名表示的文件或目录是否存在。
                file.getParentFile().mkdirs();//如果没有就创建所有必需但不存在的父目录。
            }

            try {
                //1.打开流
                writer=new FileWriter(file);
                //2.写
                writer.write(buffer.toString());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                if(writer!=null){
                    try {
                        writer.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }
}

字节流基类 

InputStream

OutputStream

package shiXun;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class IOfileDemo {
        public static void main(String[] args){
            FileOutputStream out=null;
            FileInputStream in=null;
            try {
                //打开输出流
                out=new FileOutputStream(new File("D:\\mycopyfile\\test.txt"),true);
                in=new FileInputStream("D:\\mycopyfile\\test.txt");
                //写入
                out.write("HelloWorld".getBytes());
                //读取
                byte [] b= new byte[1024];
                int len;
                while((len=in.read(b))!=-1){
                    //输出
                        System.out.println(new String(b,0,len));
                    }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                if(out!=null){
                    try {
                        out.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(in!=null){
                    try {
                        in.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }

        }
}
时间: 2024-08-07 19:55:10

IO流[字符和字节的读取]的相关文章

java021.io流 字符流

注意:字节流可以操作任意数据,但是字符流只能操作纯文本文件,一般用于文本文件的只读或只写! 字符流是什么 * 字符流是可以直接读写字符的IO流 * 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出. FileReader类的read()方法可以按照字符大小读取FileWriter类的write()方法可以自动把字符转为字节写出 字符流用处和特点:* 字符流也可以拷贝文本文件, 但不推荐使用. 因为读取时会把字节转为字符, 写出时还要把字符转回字

黑马程序员——java基础IO流——字符流缓冲区和字节流

字符流的缓冲区 l  缓冲区的出现提高了对数据的读写效率. l  对应类 ?    BufferedWriter ?    BufferedReader l  缓冲区要结合流才可以使用. l  在流的基础上对流的功能进行了增强. 1, BufferedWriter 每次可以写入一行,缓冲区的出现是为了提高流的操作效率而出现的.所以在创建缓冲区之前,必须要先有流对象.该缓冲区中提供了一个跨平台的换行符,newLine(); /* 缓冲区的出现是为了提高流的操作效率而出现的. 所以在创建缓冲区之前,

Java IO流-字符流

2017-11-05 18:34:39 Java中的IO流按数据类型分类分为两种,一是字节流,二是字符流.字符流的出现是为了简化文本数据的读入和写出操作. 如果操作的文件是文本文件,那么使用字符流会大大简化操作,但是如果什么都不知道,就用字节流. 字符流 由于字节流中读取中文不是很方便,所以Java中提供了转换流,所以 字符流 = 字节流 + 编码表(By the way,'a'=97,'A'=65,'0'=48). 字符流也有两个抽象基类:Writer Reader * OutputStrea

整理 JAVA中的IO流 (字符流和字节流两个大类)

java中的io流分为两类,字符和字节: OutputStream和InputStream字节流的父类,抽象.OutputStream有两个提供了实现的接口closable和flushable. Writer和Reader字符流的父类,抽象.实际上在流的操作中,底层与文件进行读写的都是字节流,因为即使是字符流的对象,其最终实现读写的也是用的字节流. 操作文件的字节子类FileOutputStream和FileInputStream.记住,这里面写出和读入的都是字节. class useByteS

IO流-文件的写入和读取

1.文件写入 类: FileWriter继承自Writer(字符流基类之一,另外一个为Reader) 方法: writer(参数); 根据参数可以写入字符.字符数组.字符数组中的一部分.整型.字符串.字符串中的一部分,抛IOException flush(); 刷新内存,把内存中的字符流写入文件 close(); 刷新内存并关闭字符输入流,抛出IOException import java.io.*; class Test { public static void main(String[] a

IO流--字符流写数据

IO流是用来处理设备之间的数据传输的,诸如:文件的复制,上传下载文件 Java中的流可以从不同的角度进行分类: - 按照流的方向不同:分为输入流和输出流. - 按照处理数据单位的不同:分为字节流和字符流. - 按照功能不同:分为节点流和处理流 要区分字符流和字节流,我们可以从类名来区分 类名中包含Reader:字符流  输入流 类名中包含Writer:字符流  输出流 类名中包含Input:字节流  输入流 类名中包含Output:字节流  输出流 包含Stream:字节流 今天着重来看下字符流

Java里的IO流里的 ObjectInputStream 的读取\写入!

各位好!!我又来了!!今天遇见了一个小问题!! IO流里的对象读取总是出错!各种报错!!神烦啊!!百思不得其解啊!然后就上网百度!找了好久终于让我找到了!下面就让我来说一说! 当你用IO流里的对象流写入的时候,ObjectOutputStream会在文件中的开头和结尾进行一个标识AC/DC,ObjectInputStream会严格的根据开头和结尾来进行读取,当读取不到的时候就会进行报错!! ObjectOutputStream无法将上一次的对象的结尾的DC消除,所以千万不要用FileOutPut

Java基础知识强化之IO流笔记27:FileInputStream读取数据一次一个字节数组byte[ ]

1. FileInputStream读取数据一次一个字节数组byte[ ]  使用FileInputStream一次读取一个字节数组: int read(byte[]  b) 返回值:返回值其实是实际读取的字节个数 . 2. 代码示例: 1 package com.himi.fileinputstream; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 6 7 8 /** 9 * 10 * 使用FileIn

Java IO流 之 InputStreamReader 字节流转字符流

http://www.verejava.com/?id=16994667084611 package com.io; import java.io.*; public class TestInputStreamReader { public static void main(String[] args) { InputStream is=null; try { is=new FileInputStream("res/chinese.txt"); //将inputStream 转换成 R