JAVA文件流

###JAVA异常
public class 子类名 extends 父类名{}—继承父类,拥有父类特性,同时是对父类的扩展;

Throwable:异常框架,错误或异常的超类;
		Error:错误---无力解决的,无法控制的错误
		Exception:异常---一个正常流程产生新的流程
				RuntimeException:代码引起的异常,可通过修改代码解决
				IOException:没办法通过代码处理的异常(文件找不到)。处理方法:1.将异常往上抛;2.try{}catch(){}

##File(文件)类常用整理##

boolean	exists()
      测试此抽象路径名表示的文件或目录是否存在。
boolean	isFile()
      测试此抽象路径名表示的文件是否是一个标准文件。
 File[]	listFiles()
      返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
continue---跳过此次操作继续执行下一个操作
try()catch(){}---尝试执行这个操作
Exception e---异常情况
getName---提取名字
throws IOException---异常命令需补充方法体
\r\n---换行

###文件漏洞
File file = new File(“D:/网络安全”);
File[] fs = file.listFiles();
for(File f:fs){
System.out.pr(f)
}

扫描文件

package com.mtlk.demo;

import java.io.File;

public class 文件扫描 {
    public static void main(String[] strs){  //主方法
        String[] drives = {"d:/"};   //需要扫描的文件路径,以数组形式表现
        for(String drive : drives){   //将数组中的值一个一个提取
            File file  = new File(drive);  //实例化File这个类
            if(!file.exists()){   //判断这个空间是否存在
                continue;   //如果不存在就跳过
            }else{
            getFiles(file);   //如果存在进入下面调用的方法中执行
        	}
		}
    }

    private static void getFiles(File file) {   //构造方法:写入参数file,属于File类
        File[] childFiles = file.listFiles();   //将文件名表示为一个数组
        int length = childFiles.length;   //设置循环规则
        for(int i=0;i<length;i++){
            try {                       //尝试进行以下操作
                File childFile = childFiles[i];   //将文件一个一个取出来
                if(childFile.isFile()){   //判断是否是一个文件
                    System.out.println(childFile);   //如果是文件,那么输出
                }else {
                    getFiles(childFile);   //如果不是文件那么返回再获取数组执行一次
                }
            }
            catch (Exception e){   //如果遇到权限等异常,那么跳过此次执行
                continue;
            }
        }
    }
}

删除文件

package com.mtlk.demo;

import java.io.File;

public class 文件删除 {
	
	public static void main(String[] args) {
    	String[] drives={"E:\\text"};		//需要删除的文件路径,以数组形式排列
   	 	for(String drive:drives){		//将数组的值一个一个提取处理
       	File file = new File(drive);		//实例化File类
        	if(!file.exists()){			//判断是否存在
        	    continue;			//不存在就跳过此次操作
        	}else {
        	    getFile(file);		//存在再执行下面调用的操作
        	}

    	}
	}
	public static void getFile(File file){		//构造方法
    	File[] chidFile=file.listFiles();		//将文件名表示成一个数组
    	int length = chidFile.length;		//控制循环次数
    	for (int i=0;i<length;i++){
    	    try {
    	        File childsFile=chidFile[i];		//提取数组中每个值的下标
    	        if(childsFile.isFile()){		//判断是否为一个正常文件
    	            String name=childsFile.getName();  //如果是文件,那么将文件名转化为字符串
    	            if (name.endsWith("jpg" )|| name.endsWith("docx")){  //判断字符串是否以这个字符结尾
    	                childsFile.delete();  //如果是那么删除这个文件
    	            }
    	        }else{
					getFile(chidsFile);  //如果不是文件,那么返回再执行一次
				}
    	    }catch (Exception e){
    	        continue;		//如果遇到权限不够等情况,跳过此次操作
    	    }
    	}
	}
}

##文件输入与输出

####输出:FileInputStream
FileInputStream(String name)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
int available()
返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。
用来确定字节容器的大小。
int read()
从此输入流中写入数据字节。
**
原理:以字节流形式读取,用字节容器(数组)装取**

1.实例化这个类,输入读取路径。---字节流;
2.构造一个字节数组,字节流有多大,容器就构造多大;int临界值--2147483647=2097151kb=2047m
3.把字节流的东西读取到容器;
4.将数组还原为字符串
5.打印文件

java命令

package com.mtlk.demo;

import java.io.FileInputStream;
import java.io.IOException;

public class 文件流出 {
	public static void main(String[] args)throws IOException {
	    FileInputStream fis = new FileInputStream("E:\\text.txt");  //实例化类,指定要写出的路径
	    byte[] context = new byte[fis.available()]; //创建一个字节数组作为容器
	    fis.read(context);                //将字节流导入容器中
	    String s = new String(context);  //转化为字符串
	    System.out.println(s);  //输出这个字节流内容

	}
}

####输入:FileOutputStream
FileOutputStream(String name)
创建一个向具有指定名称的文件中写入数据的输出文件流。
void write(byte[] b)
将 b.length 个字节从指定 byte 数组写入此文件输出流中。
byte[] getBytes()
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。

java命令

package com.mtlk.demo;

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

public class 文件写入 {
	public static void main(String[] args)throws IOException {
	    String context = "JAVA真是优美的语言";   //写入的文字,字符串类型
	    FileOutputStream fos = new FileOutputStream("E:/text.txt",true);  //实例化类,写入路径+true可以追加文本
	    fos.write(context.getBytes());      //将内容写入路径,以字节数组形式
	    fos.flush();        //刷新
	    fos.close();       //关闭
	}
}

###综合使用:错误日志
getMessage
public String getMessage()
返回此 throwable 的详细消息字符串。

package com.mtlk.demo;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class 错误日志 {
    public static void main(String[] args) throws IOException {
        try 	{                                                               //尝试下面的操作
            FileInputStream fis = new FileInputStream("E:/text/aa.txt"); //一个无法找到文件的路径
 	   }catch (IOException e)	{                                                 //异常时执行下面操作
        	FileOutputStream fos = new FileOutputStream("E:/text/log.txt",true); //异常时写入的路径
        	String date = new SimpleDateFormat("yyyy-hh-dd HH:mm:ss").format(new Date());   //写入的时间格式
        	String log = date + "" + e.getMessage()+ "" + "\r\n";               //写入的整体格式
        	fos.write(log.getBytes());                  //以字节数组方式写入
        	fos.flush();                        //刷新
        	fos.close();                        //关闭
    	}
	}
}

###综合使用:复制文件
package com.mtlk.demo;

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

public class 复制文件 {
    public static void main(String[] args) throws IOException {
    	FileInputStream fis = new FileInputStream("E:/text/text.txt"); //指定将要copy的文件源路径
    	byte[] context = new byte[fis.available()];                     //创建一个字节数组接收它
    	fis.read(context);                                          //读写到字节数组
    	FileOutputStream fos = new FileOutputStream("E:/demo.txt",true);  //指定将要copy的文件目的路径
    	fos.write(context);                                       //将文件写入到指定路径
    	fos.flush();                                         //刷新
    	fos.close();                                            //关闭
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值