re0:从零开始的Java学习生活13(连载)

IO流

一、File

文件或目录的抽象表现形式

构造器:

File(String pathname)
File(File parent, String child)

方法:

方法名作用
canWrite判断可写
canread判断可读
creatNewFile创建新文件
isAbsolute判断是否为绝对路径
isDirectory判断是否为文件夹
isFile判断是否为文件
isHidden判断是否为隐式文件
getAbsoluteFile获取绝对路径
getAbsolutePath获取绝对路径的字符串形式
getFreeSpace获取字节数
getName获取文件或文件夹名
getParent获取上一级路径名的字符串形式
lastModified最后一次被修改时间(与纪元之间的毫秒值)
length返回文件的字节数
renameTo重命名

二、IO流

file类只能操作文件外部内容,无法改变文件内部内容;IO流可以

流:以先入先出的顺序进行传输

数据源-->目的地

按流向分:

输入流

输出流

按操作单元分:

字节流|万能流

字符流

按功能分:

节点流

功能流

1、字节流

字节输入流:InputStream

字节输出流:OutputStream

InputStream和OutputStream为抽象类,无法实例化

文件输入流:FileInputStream

字节数组输入流:ByteArrayInputStream

文件输出流:FileOutputStream

字节数组输出流:ByteArrayOutputStream

构造器:

(String name)

(File file)

多态写法:

InputStream is=new FileInputStream(file);

import java.io.*;
​
public class InputStreamTest {
    public static void main(String[] args) throws IOException {
            File file=new File("D:HelloWorld.java");
            InputStream is=new FileInputStream(file);
            byte[] arr=new byte[1024];
            int len=-1;
            while((len=is.read(arr))!=-1){
                System.out.println(new String(arr,0,len));
            }
            is.close();
    }
}

OutputStream os=new FileOutputStream(file);

import java.io.*;
​
public class IOStreamTest {
    public static void main(String[] args) {
        File file=null;
        File newFile=null;
        InputStream is=null;
        OutputStream os=null;
        try{
            file=new File("D:\\HelloWorld.java");
            newFile=new File("D:\\HelloWorld02.java");
            is=new FileInputStream(file);
            os=new FileOutputStream(newFile);
            byte[] arr=new byte[1024];
            int len=-1;
            while((len=is.read(arr))!=-1){
                os.write(arr,0,len);
            }
            os.flush();
        }catch(IOException e){
            e.printStackTrace();
        }finally {
            if(os!=null){
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

2、字符流

字符流只针对文本文件

输入流|读取流:Reader

输出流|写出流:Writer

和字节流类似,Reader和Writer为抽象类,无法实例化

文件读取流:FileReader

文件写出流:FileWriter

构造器与字节流一致,多态写法与字节流相似

import java.io.*;
​
public class ReaderWriter {
    public static void main(String[] args) throws IOException {
            File file=new File("D:\\HelloWorld.java");
            File newFile=new File("D:\\hello.java");
            Reader r=new FileReader(file);
            Writer w=new FileWriter(newFile);
            char[] arr=new char[1024];
            int len=-1;
            while ((len=r.read(arr))!=-1){
                w.write(arr,0,len);
            }
            w.flush();
            w.close();
            r.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值