2019.3.6 字节输入输出流

一、JAVA程序如何访问文件属性

   JAVA API:JAVA.IO.FILE类

二、FILE类访问文件属性

  FILE类->创建文件对象的方法->操作文件或目录的属性

三、FILE类的常用方法

  

四、流

  1、流是一组有序的数据序列

  2、以先进先出方式发送信息的通道

五、JAVA流的分类

  1、按流向区分:输出流:outputstream和writer作为基类

          输入流:inputstream和reader作为基类

  2、按照处理数据单元划分:字节流:输入:inputstream基类

                  输出:outputstream基类

              字符流:输入:reader基类

                  输出:writer基类

六、inputstream类常用方法

  1、int read();从输入流一个字节一个字节的读,返回的是该字节的整数表示形式,如果到了输入流的末尾,返回-1.

  2、int read(byte[] b);从输入流读取若干字节,把这些字节保存到字节数组b中,返回的是读取的字节数,如果到了输入流的末尾,返回-1.

  3、int read(byte[] b,int off,int len);从输入流读取若干字,把这些字节保存到字节数组b中,off指的是字数组中开始保存数据的起始下标,len指的是读取的字节数目。返回的是读取到的字节数,如果到输入流的末尾,返回-1.

  4、void close();关闭流

  5、int available();可以从输入流中读取的字数目

  子类FileInputStream常的构造方法

  1、FileInputStream(File file);文件名

  2、FileInputStream(String name);路径

七、使用FileInputStream读文本文件的步骤:

  1、引入相关的类

  2、构造文件输入流FileInputStream对象

  3、读取文本文件的数据

  4、关闭文件流对象

八、OutputStream类常用方法

  1、int write(int c);

  2、int write(byte[] buf);

  3、int write(byte[] b,int off,int len);

  4、void close();关闭流

  5、void flush();强制把缓冲区的数据写到输出流中

  子类FileoutputStream常的构造方法

  1、FileoutputStream(File file);文件名

  2、FileoutputStream(String name);路径

  3、FileOutputStream(String name,boolean append);可以指定是覆盖或者追加文件内容

 

作业:将work.txt中的内容复制到workcopy.txt中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.java.homework;
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
 * 将work.txt中的内容复制到workcopy.txt中
 * @author Administrator
 *
 */
 
public class Copy {
    public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
         
        try {
            fis = new FileInputStream("work.txt");
            fos = new FileOutputStream("workcopy.txt");
            int r = -1;
            String s = "";
            //判断是否读取到末尾
            while((r = fis.read())!=-1) {
                //将读取出来的数据再转成char类型
                s += (char)r;
            }
            //在控制台上输出work.txt中的内容
            System.out.println(s);
            //将从work.txt读取出来的数据放在byte[] b数组中
            byte[] b = s.getBytes();
            //将存在byte[] b数组中的数组输出到workcopy.txt
            fos.write(b, 0, b.length);
             
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if(fos!=null) {
                    fos.close();
                }
                if(fis!=null) {
                    fis.close();
                }
                 
            } catch (IOException e) {
                e.printStackTrace();
            }
             
        }
         
    }
}

  结果示例:

  work.txt中的内容

  控制台上的内容:

  复制后workcopy中的内容是:

 

 

posted on   陈小锦  阅读(170)  评论(0编辑  收藏  举报

努力加载评论中...
点击右上角即可分享
微信分享提示