栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java学习笔记(十三)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java学习笔记(十三)

目录

一:File

二:字节流 


一:File

1.1 File类的概述和构造方法

File:它是文件和目录路径名的抽象表示

文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。

将来是要通过具体的操作把这个路径的内容转换为具体存在的。


import java.io.File;

public class Main {
    public static void main(String[] args) {
        File f1=new File("D:\itcast\java.txt");
        System.out.println(f1);

        File f2=new File("D:\itcast", "java.txt");
        System.out.println(f2);

        File f3=new File("D:\itcast");
        File f4=new File(f3, "java.txt");
        System.out.println(f4);

    }
}

1.2 File类创建功能

import java.io.File;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
       //1.在D:\itcast目录下创建一个文件java.txt
        File f1=new File("D:\itcast\java.txt");
        System.out.println(f1.createNewFile());

        System.out.println("--------------");

        //2.在D:\itcast目录下创建一个目录JavaSE
        File f2=new File("D:\itcast\JavaSE");
        System.out.println(f2.mkdir());

        System.out.println("--------------");

        //3.我要在D:\itcast目录下创建一个多级目录JavaWEB\HTML
        File f3=new File("D:\itcast\JavaWEB\HTML");
        System.out.println(f3.mkdirs());
        
    }
}

1.3 File类判断和获取功能

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

     File f=new File("D:\IT\java.txt");
       // System.out.println(f.createNewFile());//创建java.txt

        System.out.println(f.isFile());//判断是否为文件

        System.out.println(f.exists());//判断文件是否存在

        System.out.println(f.getAbsolutePath());//返回此抽象路径名的绝对路径名字符串

        System.out.println(f.getPath());//将此抽象路径名转换为路径名字符串

        System.out.println(f.getName());//返回由此抽象路径名表示的文件或目录的名称

        File f1=new File("D:\IT\JavaSE");
       // System.out.println(f1.mkdir());//创建JavaSE目录

        System.out.println(f1.isDirectory());//判断是否为目录

        File f2=new File("D:\IT\JavaW\HTML");
       // System.out.println(f2.mkdirs());

        File f3=new File("D:\IT");//返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
        String[] list = f3.list();
        for(String s:list){
            System.out.print(s+" ");
        }
        System.out.println();
        File[] files = f3.listFiles();//返回此抽象路径名表示的目录中的文件和目录的File对象数组
        for(File file:files){
            System.out.println(file+" ");
        }
    }
}

 1.4 File类删除功能:

绝对路径和相对路径的区别:

绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。

如:D:\itcast\java.txt

相对路径:必须使用取自其他路径名的信息进行解释。

如:myFile\java.txt

1.5 递归

递归的概述:以编程的角度来看,递归指的是方法定义中调用方法本身的现象。

二:字节流 

2.1 IO流概述和分类:

IO流概述

IO:输入/输出(Input/Output)流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输。IO流就是用来处理设备间数据传输问题的

常见的应用:文件复制;文件上传;文件下载。

IO流分类:

按照数据的流向

输入流:读数据

输出流:写数据

按照数据类型来分

字节流:

           字节输入流;字节输出流

字符流:

           字符输入流;字符输出流

如果数据通过Windows自带的记事本软件打开,我们还可以读懂里面的内容,就使用字符流,否则使用字节流。如果你不知道该使用哪种类型的流,就使用字节流。

2.2 字节流写数据

字节流抽象基类:

InputStream:这个抽象类是表示字节输出流的所有类的超类。OutputStream:这个抽象类是表示字节输出流的所有类的超类。子类名特点:子类名称都是以其父类名作为子类名的后缀。

FileOutputStream:文件输出流用于将数据写入File

FileOutputStream(String name):创建文件输出流以指定的名称写入文件。

使用字节输出流写数据的步骤:

创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)调用字节输出流对象的写数据方法释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)

import java.io.FileOutputStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        //创建字节输出流对象
        //FileOutputStream(String name):创建文件输出流以指定的名称写入文件
        FileOutputStream fos=new FileOutputStream(new File("mokuai-06\fos.txt"));
        

        //void write(int b):将指定的字节写入此文件输出流
        fos.write(97);
        fos.write(57);
        fos.write(55);

        //最后都要释放资源
        //void close():关闭此文件输出流并释放与此流相关联的任何系统资源
        fos.close();
    }
}

2.3 字节流写数据的3种方式

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        //创建字节输出流对象
        //FileOutputStream(String name):创建文件输出流以指定的名称写入文件
        FileOutputStream fos=new FileOutputStream(new File("mokuai-06\fos.txt"));

        //FileOutputStream(File file):创建文件输出流以写入由指定的File对象表示的文件
        

        fos.write(97);
        //byte[] bys={97,98,99,100,101};
        byte[] bys="abcdef".getBytes();//返回字符串对应的字节数组
        fos.write(bys);

        //void write(byte[] b,int off,int len):将len字节从指定的字节数组开始,从偏移量off开始写入此文件输出流一次写一个字节数组的部分数据

        byte[] nys1="xyz".getBytes();
        fos.write(nys1,0,nys1.length-1);


        //最后都要释放资源
        //void close():关闭此文件输出流并释放与此流相关联的任何系统资源
        fos.close();
    }
}

2.4 字节流写数据的两个小问题

字节流写数据如何实现换行呢?

Windows:rn

Linux:n

mac:r

字节流写数据如何实现追加写入呢?

public FileOutputStream(String name,boolean append)

创建文件输出流以指定的名称写入文件。如果第二个参数为TRUE,则字节将写入文件的末尾而不是开头。


package package01;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        //创建字节输出流对象
        //FileOutputStream(String name):创建文件输出流以指定的名称写入文件
        FileOutputStream fos=new FileOutputStream(new File("mokuai-06\fos.txt"),true);

        //写数据
        for(int i=0;i<10;i++){
            fos.write("hello".getBytes());
            fos.write("n".getBytes());
        }


        //最后都要释放资源
        //void close():关闭此文件输出流并释放与此流相关联的任何系统资源
        fos.close();
    }
}

2.5 字节流写数据加异常处理:

finally:在异常处理时提供finally块来执行所有清除操作。比如说IO流的释放资源

特点:被finally控制的语句一定会执行,除非JVM退出。

2.6 字节流读数据(一次读一个字节数组数据)

步骤:1.创建字节输入流对象2.调用字节输入流对象的读数据方法3.释放资源

 


import java.io.*;

public class Demo {
    public static void main(String[] args) throws IOException {
        //根据数据源创建字节输入流对象
        FileInputStream fis=new FileInputStream("D:\IT\desk.jpg");
        //根据目的地创建字节输出流对象
        FileOutputStream fos=new FileOutputStream(new File("mokuai-06\desk.jpg"));

        //读写数据,赋值图片(一次读取一个字节数组,一次写入一个字节数据)
        byte[] bys=new byte[1024];
        int len;
        while((len=fis.read(bys))!=-1){
            fos.write(bys,0,len);
        }
        //释放资源
        fos.close();
        fis.close();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760214.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号