Java io流

文件
1、什么是文件?
文件是我们保存数据的地方。

2、文件流
文件在程序中是以流的形式来操作的。

流:数据在数据源(文件)和程序(内存)之间经历的路径

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

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

 

3.字符流和字节流
字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。字节流和字符流的区别:

(1)读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

(2)处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

(3)字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的;而字符流在操作的时候下后是会用到缓冲区的,是通过缓冲区来操作文件,我们将在下面验证这一点。

结论:优先选用字节流。首先因为硬盘上的所有文件都是以字节的形式进行传输或者保存的,包括图片等内容。但是字符只是在内存中才会形成的,所以在开发中,字节流使用广泛。

4.输入流和输出流
对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。

Java流类图结构:


 

5、常用的文件操作
1、创建文件对象相关构造器和方法

new File(String pathname) 

new File(File parent,String child) 

new File(String parent,String child) 

createNewFile()

import org.testng.annotations.Test;

import java.io.File;

import java.io.IOException;

 

public class FileCreate {

    public static void main(String[] args) {

 

    }

    @Test

    public void create1(){

        String filePath = "D:\\file1.txt";

        File file = new File(filePath);

        try {

            file.createNewFile();

            System.out.println("创建文件1成功");

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

 
2、获取文件的相关信息

import org.testng.annotations.Test;

import java.io.File;

public class FileInformation {

    public static void main(String[] args) {

    }

    @Test

    public void Info(){

        File file = new File("D:\\file1.txt");

        System.out.println("文件名称:"+file.getName());

        System.out.println("文件绝对路径:"+file.getAbsolutePath());

        System.out.println("文件父目录:"+file.getParent());

        System.out.println("文件大小(字节):"+file.length());

        System.out.println("文件是否存在:"+file.exists());

        System.out.println("是否是文件:"+file.isFile());

        System.out.println("是否是目录:"+file.isDirectory());

    } 

}

 
3、目录的操作

import org.testng.annotations.Test;

import java.io.*;

public class fileDirectory {

    public static void main(String[] args) {

 

    }

    @Test

    public void fileDelete(){

        String filePath = "D:\\file1.txt";

        File file = new File(filePath);

 

        if(file.exists()){

            if(file.delete()){

                System.out.println(filePath+"删除成功");

            }else {

                System.out.println(filePath+"删除失败");

            };

        }else{

            System.out.println("文件不存在");

        }

 

    }

    @Test

    public void fileDeleteD(){

        String filePath = "D:\\file1.txt";

        File file = new File(filePath);

        if(file.exists()){

            if(file.delete()){

                System.out.println(filePath+"删除成功");

            }else {

                System.out.println(filePath+"删除失败");

            };

        }else{

            System.out.println("目录不存在");

        }

    }

    @Test

    public void fileDeleteD1(){

        String dirPath = "D:\\test\\dir1.txt";

        File file = new File(dirPath);

 

        if(file.exists()){

            System.out.println(dirPath+"该目录已经存在");

        }else{

            if(file.mkdirs()){

                System.out.println("创建成功");

            }else {

                System.out.println("创建失败");

            };

        }

 

    }

    //InputStream

    //OutputStream

    //Writer

    //Reader

}

6、Scanner与Println
1、基本键盘输入

import org.testng.annotations.Test;

import java.util.Scanner;

public class scanPrintTest {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        String str = input.next();

        System.out.println(str);

        System.out.println("hello world");

    }

}

2、常见键盘输入类型

import java.util.Scanner;

public class scanTest {

    public static void main(String[] args) {

        Scanner input =new Scanner(System.in);

        System.out.print("请输入一个double类型的数:");

        double d = input.nextDouble();

        System.out.println(d);

        System.out.print("请输入一个int类型的数:");

        int i = input.nextInt();

        System.out.println(i);

        System.out.print("请输入一个string类型的数:");

        String s = input.next();

        System.out.println(s);

    }

}

posted @ 2022-11-06 23:19  guojiale1  阅读(24)  评论(0)    收藏  举报