File 输入输出流

File流:
对象即可表示文件,也可表示目录,在程序中一个File对象可以代表一个目录或文件,
利用File类可以对文件或者目录进行基本操作。
语法:

File <对象名>=new File("E:/ 地址值");

基本的方法:

f**ile.isFile();        判断是否为一个文件
file.isDirectory        判断是否为目录
file.exists             判断文件或者目录是否存在**

输出流、输入流
输入输出流是相对计算机内存来说的,如果数据输入到内存,则称为输入流,
如果从内存中输出则称为输出流!
其中输入/输出流 又分为字节流和字符流两种形式:
字节流:是8位通用字节流,单位是字节,字节流的基类是InputStream类和Reader类,它们是抽象类。
字符流:16位Unicode字符流,单位是Unicode字符,最适合用来处理字符串和文本,基类是:
Reader类和Writer类。

                            {字节输入流InputStream基类
                    {字节流-->
                            {字节输出流OutputStream基类

按照处理数据单元划分— |

                            {字符输入流Reader基类
                    {字符流-->
                        {字符输出流Writer基类

输入流
**InputStream类常用方法:
int read() 读取一个字节数据
int read(byte) 将数据读取到字节数组中
int read(byte[ ]b,int off,int len) 从输入流中读取最多len长度的字节,保存到字节数组 b中,保存的位置从off开始。
void close(); 关闭输入流**
常用子类:FileInputStream,用于从文件中读取数据

输出流
OutputStream类常用方法

**1. void write(int c) 读取一个字节数据
2. void write(byte[ ] buf ) 写入数组buf的所有字节
3. void write(byte[ ]b,int off,int len) 将字节数组中off位置开始,长度为len的字节数据输出到输出流中。
4. void close() 关闭输出流
常用子类:FileOutputStream,用于想文件写数据**

Reader类常用方法

**1. int read() 从输入流中读取单个字符,返回多读取的字符数据
2. int read(byte[ ]c) 从输入流中读取c.length的字符,保存到字符数组c中,返回实际读取的 字符数

  1. read(char[ ]c,int off,int len ) 从输入流中读取最多len的长度字符,保存到字符数组c中,保存的位
    置从off位置开始,返回实际读取的字符长度
  2. void close() 关闭流
    常用子类:BufferedReader,结束Reader对象作为参数,并对其添加字符缓冲器**

writer类常用方法

**1. write(String str) 将字符串里包含的字符输出到指定的输出流中
2. write(String str,int off,int len) 将str字符串里从off位置开始长度为len的字符输出到输出流中
3. void close() 关闭输出流
4. void flush 刷新输出流**

                                        ## 使用字节流读写文本文件 ##

1.使用字节流FileInputStream读文本文件:
FileInputStream,称文件输入流,作用是将文件中的数据输入到内部存储器(简称内存)中。
它是字节输入流InputStream抽象类的一个子类,可以利用它来读取文本文件中的数据。

使用步骤:

  1. 引入相关类
  2. 构造一个文件输入流对象InputStream 对象=new FileInputStream("text.txt");
  3. 利用文件输入流类的方法读取文本文件的数据
对象.available();                 //可读取的字节数
对象.read()                       //读取文本的数据

4.关闭文件输入流对象:
对象.close;()

package 字节流;
/*
 * 向一个新的文本文件中      写入旧的文件信息       (新:adcd)  (旧:写入之后的:abcd)
 * 也可以是复制,把0.png  复制到sss.png 
 *  
 * */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Test {
    public static void main(String[] args) throws Exception {
        //实例化对象 指定路径
        File file=new File("E:/images/0.png");

        File file1=new File("E:/im/sss.png");

        /*//实例化对象 指定路径
                File file=new File("E:/images/0.txt");

                File file1=new File("E:/im/sss.txt");
                */

        //将对象路径读取
        FileInputStream fip=new FileInputStream(file);

        //将读取到的字节  写入
        FileOutputStream fop=new FileOutputStream(file1);

        //定义数组  将信息放入数组中
        byte [] b=new byte[(int) file.length()];

        //读取数组里面的字节
        fip.read(b);

        //将读取好的字节写入
        fop.write(b);
        //获取某个文件夹的名字
        String ii=file.getName();
        System.out.println(ii);

        //关闭流
        fip.close();
        fop.close();
        System.out.println("写入成功");

    }
}

FileOutputStream:

    使用字节流用于向文件写入数据      字节流

        如果要读取数据,要先构造要写入哪一个文件的位置

FileWriter:字符流 后面可以用缓冲区,BufferedWriter

使用字符流BufferedReader 和FileReader 读取文本文件

**FileWriter <对象名333>=new FileWriter<"E:/地址">;**

    BufferedWriter语法:
BufferedWriter <对象名>=new BufferedWriter<对象名333>;

可以用BufferedWriter的<对象名>,直接调用方法,不用通过数组,更加方便

注意:使用BufferedWriter的 <对象名>.flush(); 清空

               <对象名>.close();  关闭

二进制
DataInputStream 可以进行读、写文件

**使用字节读取二进制文件:
需要和FileInputStream 配合使用**

ex:
    FileInputStream fis=new FileInputStream("E:/ 地址");
//使用二进制:
    DataInputStream dis=new DataInputStream(fis)

;

调用方法,使用二进制的对象进行调用
dis.方法();

使用字节写入二进制文件。和读取一样。

                    ## 二进制读写文件 ##
package 字节流;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class DataErJinZhi {
    public static void main(String[] args) throws Exception {

        //实例化对象路径
        File file=new File("E:/images/二进制.txt");
        File file1=new File("E:/im/写入后的二进制.txt");

        //实例化输入流,将要读取的路径放入对象中
        FileInputStream fip=new FileInputStream(file);
        //将要读取的对象 放入二进制中
        DataInputStream dis=new DataInputStream(fip);

        //输出流
        FileOutputStream fop=new FileOutputStream(file1);
        DataOutputStream dos=new DataOutputStream(fop);

        dos.writeDouble(12.3);
        double i=dis.readDouble();
        System.out.println(i);
        dis.close();
        dos.close();
    }
}
                        ## Buffered读取输入/输入流 ##
package 字符流;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Buffered {
    public static void main(String[] args) {
        //创建流对象
        File file=new File("E:/images/字符.txt");
        File file1=new File("新的字符.txt");

        //打开输入输出流
        try {
            FileReader fr=new FileReader(file);
            BufferedReader br=new BufferedReader(fr);

            //读取文本里面所有的信息
            String str=br.readLine();
            while(str!=null){
                System.out.println(str);
                str=br.readLine();
            }

            /*//打开输出流,写文件
            FileWriter fw=new FileWriter(file1);
            BufferedWriter bw=new BufferedWriter(fw);

            bw.write("你好");*/

            //两个都可以  这个只是读取,写入,控制台不能显示

            FileInputStream fis=new FileInputStream(file);
            FileOutputStream fos=new FileOutputStream(file1);
            byte [] b=new byte[(int) file.length()];
            fis.read(b);
            fos.write(b);


            //关闭资源
//          bw.close();
//          fw.close();
            br.close();
            fr.close();



        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值