(一)java IO基本操作

目录

一.File类

1.1构造方法:

1.2主要方法

二.IO

2.1常用的io流

2.2Java IO流体系中常用的流分类

2.3总结


一.File类

Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。

1.1构造方法:

  • 通过给定的父抽象路径名和子路径名字符串创建一个新的File实例。

 File(File parent, String child);

  • 通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。

File(String pathname)

  • 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

File(String parent, String child)

  • 通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。

File(URI uri)

1.2主要方法

方法

描述

String   getName()

获取文件的名称

boolean  canRead()

判断文件是否是可读的

boolean  canWrite()

品判断文件是否可被写入

boolean  exits()

判断文件长度是否存在

int  length()

获取文件的长度(以字节为单位)

String  getAbsolutePath()

获取文件的绝对路径

String  getParent()

获取文件的父路径

boolean  isFile()

判断此抽象路径名表示的文件是否为普通文件

boolean  isDirectory()

判断此抽象路径名表示的是否是一个目录

boolean  isHidden

判断文件是否是隐藏文件

long  lastModified()

获取文件最后修改时间

Boolean  canExecute()

测试应用程序是否可以执行此抽象路径名表示的文件。

boolean  createNewFile()

当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。

boolean  delete()

删除由此抽象路径名表示的文件或目录。

File[]  listFiles()

返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。

String[]  list()

返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。

boolean  mkdirs()

创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。可创建多层文件包

boolean  mkdir()

创建由此抽象路径名命名的目录。只能创建一层文件包

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

public class FileDemo {

    public static void main(String[] args) throws IOException {

        String parth ="F:\\Filetest\\File0044\\File003"; //新建文件夹

        File file =new File(parth);

        if(file.exists()){//文件是否存在

        System.out.println("文件存在目录:"+file.getPath());

        file.getName();//文件名

        file.getPath();//父目录

        file.delete();//删除文件

        System.out.println("文件已删除");

        }else{
    
        //被这个抽象路径名创建目录。(不能创建父目录)

        file.mkdir();

        // 由这个抽象路径名创建目录命名,包括任何必要的但不存在的父目录。(能创建父目录)
    
        file.mkdirs();

        }

    }

}

二.IO

2.1常用的io流

IO流分为字节流和字符流

简单的理解字节流就是byte类型的流,可以直接处理byte类型,要处理String类型字符创,先要转化为byte类型才能进行处理

字符流简单理解就是可以直接处理字符串的流。

2.2Java IO流体系中常用的流分类

Java输入/输出流体系中常用的流分类(表内容来自java疯狂讲义)

注:下表中带下划线的是抽象类,不能创建对象。粗体部分是节点流,其他就是常用的处理流。

流分类

使用分类

字节输入流

字节输出流

字符输入流

字符输出流

 

抽象基类

InputStream

OutputStream

Reader

Writer

节点流

访问文件

FileInputStream

FileOutStream

FileReader

FileWriter

访问数值

ByteArrayInputStream

ByteArrayOutStream

CharArrayReader

CharArrayWriter

访问管道

PipedInputStream

PipedOutStream

PipedReader

PipedWriter

访问字符串

 

 

StringReader

StringWriter

处理流

缓冲流

BufferedInputStream

BufferedOutputStream

BufferedReader

BufferedWriter

转换流

 

 

InputStreamReader

OutputStreamWriter

对象流

ObjectInputStream

ObjectOutputStream

 

 

抽象基类(过滤)

FilterInputStream

FilterOutputStream

FilterReader

FilterWriter

打印流

 

PrintStream

 

PrintWriter

推回输入流

PushbackInputStream

 

PushbackReader

 

特殊流

DataInputStream

DataOutputStream

 

 

2.3总结

1.Java IO是采用的是装饰模式,即采用处理流来包装节点流的方式,来达到代码通用性。

2.处理流和节点流的区分方法,节点流在新建时需要一个数据源(文件、网络)作为参数,而处理流需要一个节点流作为参数。

3.处理流的作用就是提高代码通用性,编写代码的便捷性,提高性能。

4.节点流都是对应抽象基类的实现类,它们都实现了抽象基类的基础读写方法。其中read()方法如果返回-1,代表已经读到数据源末尾。

5转换流:实现了节流和字符流相互

OutputStreamWriter outputStreamWriter =new OutputStreamWriter(
                                            new BufferedOutputStream(
                                                  new FileOutputStream(file)));
outputStreamWriter.write("输出是字符");
public class IoDemo {



    public static void main(String[] args) throws IOException {

        //从文件中读区数据

        InputStream in = new FileInputStream(
                                "C:\\Users\\Administrator\\Desktop\\学习路线\\并发.txt");

        byte bytes[] = new byte[200];

        StringBuffer buffer =new StringBuffer();

        while (in.read(bytes)!=-1){//循环取出数据每次从0读取到1024

        //转换成字符串

        String str=new String(bytes,"GBK");//把byte类型的数据转化为String的UTF-8类型方便输出

        buffer.append(str);

        System.out.println(str);

        }

        in.close();

        //写入文件

        String parth ="F:\\Filetest\\File\\File001\\"; //新建文件夹

        File file =new File(parth);

        if(file.exists()){//

        System.out.println("文件存在目录:"+file.getPath());

        }else{file.mkdirs();}
        
        //(缓存字节流)使用方式和字节流差不多,但是效率更高(推荐使用) true表示文件可追加

        OutputStream Out =new BufferedOutputStream(
                                new FileOutputStream(parth+"aa.txt",true));

        //字节流

        FileOutputStream fileOutputStream = new FileOutputStream(parth+"aa.txt",true);

        Out.write(buffer.toString().getBytes());

        Out.close();

        //显示文件大小

        File f =new File(parth+"aa.txt");

        System.out.println(f.length());

        System.out.println("写入成功");

    }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值