java的IO流

文章详细介绍了Java中文件和目录操作,包括创建新文件、删除、重命名、查询文件/文件夹存在性,以及使用File类进行文件夹操作、路径获取、文件内容处理、流复制等技术。涉及字节流和字符流的区别,以及在服务器开发中的文件权限检查。
摘要由CSDN通过智能技术生成

文件名createNewFile

创建新的文件(空文件)

delete()删除

rename修改文件名

exists()查询文件是否存在文件夹

mkdir只能创建一个新的文件夹

mkdirs嵌套式创建文件夹

delete删除文件夹

rename修改文件夹的名字isFile是否文件,isDirectory是否文件夹实际开发过程中获取项目目录,获取项目目录(需要项目文档文件,word,excel数据文件)获取内容

getgetName()应用处理图片,只有图片文件符合要求,获取文件名字。

底层用的substring为判断你的文件名getParent()

父类的目录lastIndexOf找”//”,substring返回串

getPath()获取路径-全部路径

getAbsolutePath()获取相对地址,获取的项目目录判断文件是否可写canWrite判断文件是否可读canRead(应用于服务器中的开发,服务器linux系统)最终的修改时间lastModified()查看服务器是否存在攻击行为(保护文件的安全)最后修改时间与日志记录文件的用户最后修改时间,如果用户允许操作,这个用户不允许操作,这个用户是攻击用户。文件长度length()Delete和deleteOnExit遍历文件(遍历指定目录下所有文件,文件判断是否是图片,是图片,移动到某个目录去保存,输出文件修改时间。List()Listfilelist打印的是目录和文件,没有路径,,返回字符串的数组listFiles返回的目录和文件,带路径,返回的是文件数组文件的拷贝,复制,剪切,粘贴都是对文件内容进行操作。剪贴板理解成一个内存。

文件内容的操作文件都在网络传输,网络传输按字节传输。

计算机数据字节存储。

Io两个流字节流:接收的是任意格式FileInputStream文件输入流(电脑接收)输入流读方法read读入结束closeFileOutputStream文件输出流(电脑输出)输出流就是写write写入结束close复制:把文件输入流read读内容,再输出流写到另外一个地方Write一个字节一个字节做Buffered

字符流:接收的都是文字

代码如下:

testPath.java:

import com.sun.xml.internal.ws.addressing.WsaActionUtil;

import java.io.File;

public class testPath {

    public static void main(String[] args) {

        File myfile=new File("C:\\Users\\Administrator\\Desktop\\a.txt");

        System.out.println("输出文件名:");

        System.out.println(myfile.getName());

        System.out.println("输出文件路径:");

        System.out.println(myfile.getPath());

        System.out.println("输出文件相对路径,在项目开发中,常用的项目目录");

        System.out.println(myfile.getAbsolutePath());

    }

}

testList.java:

import java.io.File;

import java.util.Arrays;

public class testList {

    public static void main(String[] args) {

  /*遍历给定文件夹中的所有文件,可能有文件夹套用文件夹,如果是图片是输出文件名,如果是文本文件,输出最后的修改时间遍历文件需要用list listFile判断得到文件还是目录 是文件是判断是图片还是文本文件,是目录继续进行遍历 isFile isDirectory

是文件输出最后的修改时间 lastModified是图片输入路径和文件名  getName()  getPath() getAbsolutePath()

思路中:给定的文件夹,文件夹的位置并不清楚,不清楚内容就是参数*/

        checkFile(new File("C:\\Users\\Administrator\\Desktop\\abc"));

    }

    //需要传入一个目录

    public static void checkFile(File myfile){

        //调用list listFile列出目录所有文件,这里必须有一个File类

//        File myfile=new File(path);

        //File类中list listFiles罗列当前文件夹下的所有文件名,返回数组,必然使用Arrays.toString

        //list打印的是目录和文件,没有路径,

        //listFiles返回的目录和文件,带路径

//        System.out.println(Arrays.toString(myfile.list()));

//        System.out.println(Arrays.toString(myfile.listFiles()));

        //当前需要带路径,这里使用listFiles,这个方法返回是数组,listFile本身返回的就是File类,这里传入参数是File方便

        //获取当前时间戳

        long currentTime=System.currentTimeMillis();

        File[] mypathes=myfile.listFiles();

        //上面语句结果是数组,遍历每一个文件,判断当前的名字是文件还是文件夹,这里暂时不用索引,不用索引使用增强for

        for(File mypath:mypathes){

            //isFile isDirectory来判断文件或者文件夹

            if(mypath.isFile()){

                //如果是文件,判断是否是文本文件还是图片,传入的是File,先取File的getName()文件名

                if(mypath.getName().endsWith(".txt")){

                    System.out.println(mypath.getName()+"------"+(currentTime-mypath.lastModified()));

                }else if(mypath.getName().endsWith(".jpg")||mypath.getName().endsWith(".png")||

                        mypath.getName().endsWith(".gif")){

                    System.out.println(mypath.getPath());

                }

            }else if(mypath.isDirectory()){

                //这里再写上面的方法.在这个方法又回到方法调用这个方法,出现自身方法调用自身方法,典型的递归

                //调用方法时,循环中mypath使用的是File,但是函数接收的参数是String

                checkFile(mypath);

            }

        }

    }

}

testList1.java:

import java.io.File;

import java.util.Arrays;

public class testList1 {

    public static void main(String[] args) {

        /*

        遍历给定文件夹中的所有文件,可能有文件夹套用文件夹,如果是图片是输出文件名,如果是文本文件,输出最后的修改时间

        遍历文件需要用list listFile

        判断得到文件还是目录 是文件是判断是图片还是文本文件,是目录继续进行遍历 isFile isDirectory

        是文件输出最后的修改时间 lastModified

        是图片输入路径和文件名  getName()  getPath() getAbsolutePath()

        思路中:给定的文件夹,文件夹的位置并不清楚,不清楚内容就是参数

         */

        checkFile(new File("C:\\Users\\Administrator\\Desktop\\abc"));

    }

    //需要传入一个目录

    public static void checkFile(File myfile){

        //调用list listFile列出目录所有文件,这里必须有一个File类

//        File myfile=new File(path);

        //File类中list listFiles罗列当前文件夹下的所有文件名,返回数组,必然使用Arrays.toString

        //list打印的是目录和文件,没有路径,

        //listFiles返回的目录和文件,带路径

//        System.out.println(Arrays.toString(myfile.list()));

//        System.out.println(Arrays.toString(myfile.listFiles()));

        //当前需要带路径,这里使用listFiles,这个方法返回是数组,listFile本身返回的就是File类,这里传入参数是File方便

        //获取当前时间戳

        long currentTime=System.currentTimeMillis();

        File[] mypathes=myfile.listFiles();

        String[] pics={".jpg",".png",".gif","txt"};

        short index=-1;

        //上面语句结果是数组,遍历每一个文件,判断当前的名字是文件还是文件夹,这里暂时不用索引,不用索引使用增强for

        for(File mypath:mypathes){

            String myname=mypath.getName();

            String myfilepath=mypath.getPath();

            int len=myname.length();

            index=(short)Arrays.asList(pics).indexOf(myname.substring(len-4));

            //isFile isDirectory来判断文件或者文件夹

            if(mypath.isFile()){

                //计算索引,本身就是一个值,char型最快,根据数组索引

                //如果是文件,判断是否是文本文件还是图片,传入的是File,先取File的getName()文件名

                switch(index){

                    case 0:

                    case 1:

                    case 2:System.out.println(mypath.getPath());break;

                    case 3: System.out.println(mypath.getName()+"------"+(currentTime-mypath.lastModified()));

                }

            }else if(mypath.isDirectory()){

                //这里再写上面的方法.在这个方法又回到方法调用这个方法,出现自身方法调用自身方法,典型的递归

                //调用方法时,循环中mypath使用的是File,但是函数接收的参数是String

                checkFile(mypath);

            }

        }

    }

}

testList2.java:

import java.io.File;

import java.util.Arrays;

public class testList2 {

    public static void main(String[] args) {

        /*

        遍历给定文件夹中的所有文件,可能有文件夹套用文件夹,如果是图片是输出文件名,如果是文本文件,输出最后的修改时间

        遍历文件需要用list listFile

        判断得到文件还是目录 是文件是判断是图片还是文本文件,是目录继续进行遍历 isFile isDirectory

        是文件输出最后的修改时间 lastModified

        是图片输入路径和文件名  getName()  getPath() getAbsolutePath()

        思路中:给定的文件夹,文件夹的位置并不清楚,不清楚内容就是参数

         */

        checkFile("C:\\Users\\Administrator\\Desktop\\abc");

    }

    //需要传入一个目录

    public static void checkFile(String path){

        //调用list listFile列出目录所有文件,这里必须有一个File类

        File myfile=new File(path);

        //File类中list listFiles罗列当前文件夹下的所有文件名,返回数组,必然使用Arrays.toString

        //list打印的是目录和文件,没有路径,

        //listFiles返回的目录和文件,带路径

//        System.out.println(Arrays.toString(myfile.list()));

//        System.out.println(Arrays.toString(myfile.listFiles()));

        //当前需要带路径,这里使用listFiles,这个方法返回是数组,listFile本身返回的就是File类,这里传入参数是File方便

        //获取当前时间戳

        long currentTime=System.currentTimeMillis();

        String[] mypathes=myfile.list();

        String[] pics={".jpg",".png",".gif",".txt"};

        short index=-1;

        //上面语句结果是数组,遍历每一个文件,判断当前的名字是文件还是文件夹,这里暂时不用索引,不用索引使用增强for

        for(String mypath:mypathes){

            int len=mypath.length();

            if(len>4){

                index=(short)Arrays.asList(pics).indexOf(mypath.substring(len-4));

            }

            //构建路径

            String newpath=myfile.getPath()+"\\"+mypath;

            //构建出后这是一个新的FIle

            File mynewfile=new File(newpath);

            //isFile isDirectory来判断文件或者文件夹,调用方法的类是File

            if(mynewfile.isFile()){

                //计算索引,本身就是一个值,char型最快,根据数组索引

                //如果是文件,判断是否是文本文件还是图片,传入的是File,先取File的getName()文件名

                switch(index){

                    case 0:

                    case 1:

                    case 2:System.out.println(newpath);break;

                    case 3: System.out.println(newpath+"------"+(currentTime-mynewfile.lastModified()));

                }

            }else {

                //这里再写上面的方法.在这个方法又回到方法调用这个方法,出现自身方法调用自身方法,典型的递归

                //调用方法时,循环中mypath使用的是File,但是函数接收的参数是String

                //再调用方法需要构建一个完整路径

                checkFile(newpath);

            }

        }

    }

}

testcopy.java:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

public class testcopy {

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

        //复制文件,有输入,有输出,输入一个路径,输出一个路径

        //FileInputStream输入流,有个输入

        FileInputStream fis=new FileInputStream("C:\\Users\\Administrator\\Desktop\\aaa.png");

        //FileOutputStream,有个输出

        FileOutputStream fos=new FileOutputStream("C:\\Users\\Administrator\\Desktop\\bbb.png");

        //read方法读文件,返回的整型,如果read返回-1就读结束了,字节流是一个字节一个字节读

        //在java中有一个类型一个字节一个字节存储,就是char,ch存储就是每一个字节

        //ch存储的字节码不就是ascii码对应的字符

        //字节慢,读很多数据,很多数据组成字节数组

        int ch=0;

        byte[] mybytes=new byte[1024];

        while((ch=fis.read(mybytes))!=-1){

            fos.write(mybytes);

        }

        //结束后flush

//        fos.flush();

        //流运行结束,一定要关闭

        fis.close();

        fos.close();

    }

}

testArray.java:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

public class testArray {

    public static void main(String[] args) {

        //数组

        String[] myarrs={"1","2","3"};

        //数组工具把数组转成列表

        //列表

        List<String> arrs=Arrays.asList(myarrs);

        System.out.println(arrs.indexOf("1"));

    }

}

MyFile.java:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

import java.io.File;

import java.io.IOException;

public class MyFile {

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

        //这段话并不检查文件是否有,也不会生成文件

        File myfile=new File("C:\\Users\\Administrator\\Desktop\\a.txt");

        //创建文件的方法create

        myfile.createNewFile();

        //删除文件的方法delete

//        myfile.delete();

        //改,文件名,文件的相关属性

        //renameTo参数类型是File,new File

        myfile.renameTo(new File("C:\\Users\\Administrator\\Desktop\\b.txt"));

        //查询,看文件是否存在,存在输出的true,如果不存在输出false

        System.out.println(myfile.exists());

        //文件相关操作,除了文件以外,还有一个角色:文件夹

        File myfile1=new File("C:\\Users\\Administrator\\Desktop\\abc\\cde\\fka");

        //建立文件夹 ,mkdir和mkdirs,文件夹可能出现嵌套,mkdir如果嵌套建立不成功,mkdirs是建立嵌套的文件夹

        myfile1.mkdirs();

        //删除文件夹

//        myfile1.delete();

        //改,修改文件夹名字

        myfile1.renameTo(new File("C:\\Users\\Administrator\\Desktop\\abc\\cde\\1122"));

        //查,还可以判断是文件还是文件夹.

        System.out.println(myfile.isFile());

        System.out.println(myfile1.isDirectory());

    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值