Java中的IO流

文件:Java中保存数据的地方

文件流:文件在程序中以流的形式操作的

        输入流:数据从数据源(文件)到程序(内存)之间的路径

        输出流:数据从程序(内存)到数据源(文件)之间的路径

Java中关于文件的操作:

        File:文件类,实现了Serializable和Comparable接口

 创造文件:new File(String FilePath) 文件路径

                new File(File parent, String child)父目录+子路径

                new File(String parent, String child)父目录+子路径

 操作文件:getName():获取文件名字

                getAbsolutePath():获取文件的绝对路径

                getParent():获取文件父级路径

                length():获取文件长度,按照字节数统计

                exists():判断文件是否存在

                delete():删除文件

                isFile():判断是否是一个文件

Java中关于目录操作:

  创建目录:mkdir():创建单层文件目录

                mkdirs():创建多层文件目录

 操作文件目录:  

        isDirectory():判断是否是一个目录

Java中的IO流:

        I--> Input、O--> Output,用于数据传输、网络通信。

        Java中,对于数据的输入、输出操作以“流(Stream)”的形式进行

        Java中的io包提供了各种“流”类和接口,用于获取不同种类的数据,通过方法输入、输出数据

输入Input:读取外部数据(磁盘、光盘等存储设备中的数据)到程序(内存)中

输出Output:将程序(内存)数据输出到磁盘。光盘等存储设备中

流的分类:

        1.按照操作数据单位不同:字节流、字符流

        2.按照流的流向不同:输入流、输出流

        3.按照流的角色不同:节点流、包装流(处理流)

InputStream:字节输入流         OutputStream:字节输出流       

Reader:字符输入流        Writer:字符输出流

Java的IO流涉及40多个类,实际上都是从以上四个抽象基类派生出来的

以读取文件为例讲解四个类:

         按照字节读取文件:FileInputStream、FileOutputStream

        1.FileInputStream的创建:

                new FileInputStream(filePath)

        2.FileInputStream中的read方法:

                read():表示从输入流中读取一个字节的数据。返回读取字节的码值;读取完毕返回-1

                read(byte[] b):表示从输入流中读取b.length个字节数据并把它们保存在字节数组b中

                        读取正常返回实际读取的字节数;读取完毕返回-1;b中缓存的是读取的字节

        3.FileOutputStream的创建:

               new FileOutputStream(filePath):写入内容时,会将原来的内容覆盖     

               new FileOutputStream(filePath, true):写入内容时,会在原先的内容上进行追加

        4.FileOutputStream中的write方法:

                 write(Byte b):写入一个字节

                write(str.getBytes()):将字符串转为字节数组写入

                write(str.getBytes(), off, len):将字符串转为字节数组,从off位置写len个字节                  

// 完成对文件的拷贝:将d:\\郁金香.jpg拷贝到d:\\.temp\\花花\\郁金香.jpg
String srcPath = "d:\\郁金香.jpg";
String descPath = "d:\\.temp\\花花\\郁金香.jpg";
// 创建文件输入流,准备将文件读取到程序
FileInputStream fis = new FileInputStream(srcPath);
// 创建文件输出流,准备将数据写入文件
FileOutputStream fos = new FileOutputStream(descPath);
// 创建字节数组,存储数据
byte[] bytes = new byte[1024];
// 实际读取的长度
int readLen = 0; 
// 边读边写的方式
while((readLen = fis.read(bytes)) != -1) {
    bos.write(bytes, 0, readLen);
}
System.out.println(拷贝完成");
// 关闭IO流,避免造成资源的浪费
if (fis != null) {
    fis.close();
}
if (fos != null) {
    fos.close();
}

        按照字符读取文件:FileReader、FileWriter

        1.FileReader的创建:

                new FileReader(file)

                new FileReader(filePath)

        2.FileReader的read方法:

                read():读取单个字符。返回该字符;如果读到文件末尾返回-1

                read(char[]):读取多个字符数组到数组。返回读取到的字符数;读到文件末尾返回-1

        3.FileWriter的创建:

                new FileWriter(filePath):覆盖模式,相当于流的快捷键在首段

                new FileWriter(filePath, true):追加模式,相当于流的快捷键在尾段

        4.FileWriter的write方法:

                write(int):写入单个字符

                write(char[]):写入指定数组         write(char[], off, len):写入指定数组的指定部分

                write(String):写入指定字符串        write(String, off, len):写入指定数组的指定部分

注意:在使用FileWriter后,必须关闭(close)或刷新(flush),否则无法写入指定文件

// 完成文件的拷贝:将d:\\test.txt拷贝到d:\\.temp\\test1.txt
String srcPath = "d:\\test.txt";
String descPath = "d:\\.temp\\test1.txt";
// 创建文件输入流将数据从文件读取到程序中
FileReader fr = new FileReader(srcPath);
// 创建文件输出流将数据输出到文件中
FileWriter fw = new FileWriter(descPath);
// 创建字符数组
char[] chars = new char[8]; 
// 读取字符长度
int readLen = 0;
while((readLen = fr.read(chars)) != -1) {
    fw.write(chars);
} 
// 关闭IO流,释放资源
fr.close();
fw.close();

          

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值