Java-File与IO流

一:目录

1.File类及基本方法;

2.文件过滤器;

3.字节流;

4.字符流;

5.缓冲流;

6.转换流;

7.打印流;

二:File类及基本方法:

1.File类的创建

 2.File类的常用方法:

boolean exists()判断File对象对应的文件或目录是否存在
boolean delete()删除File对象对应的文件或目录
boolean createNewFile()新建一个此File对象所指定的新文件
String getName()返回File对象表示的文件或文件夹的名称
String getPath()返回FIle对象对应的路径
String getAbsolutePath返回File对象的绝对路径
String getParentFile()返回File对象对应目录的父目录
boolean canRead()判断文件是否可读
booean canWrite()判断文件是否可写
boolean isFile()判断File对象对应的是否是文件
boolean isDirectory()判断File对象对应的是否是目录
boolean isAbsolute()判断File对象对应的文件是否是绝对路径
long length()返回文件内容的长度
String[] list()列出目录下的全部内容,返回名字
File[] listFiles()返回一个包含了File对象所有子文件和子目录的File数组

 File不能改变文件中的内容。

三:文件过滤器:

过滤器操作步骤:

1.调用FileList()或list()方法传入文件文件文件过滤器对象;

2.取出当前File对象所代表目录下的所有子目录和文件;

3.对于每一个子目录或文件,都会调用accept()方法。

1.文件过滤(FileFilter):

import java.io.File;
import java.io.FileFilter;

public class test6 {
	public static void main(String[] args) throws Exception{
		File file=new File("D:/代码");
		File[] files=file.listFiles(new FileFilter() {
			
			@Override
			public boolean accept(File pathname) {
				// TODO 自动生成的方法存根
				if(pathname.getName().contains("表")) 
					return true;
				else
					return false;
			}
		});
		for (File file2 : files) {
			System.out.println(file2.getName());
		}
	}
}

2.文件名称过滤(FilenameFilter)

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;

public class test6 {
	public static void main(String[] args) throws Exception{
		File file=new File("D:/代码");
        //String strings=file.list(new FilenameFilter())
		File[] files=file.listFiles(new FilenameFilter() {    
			@Override
			public boolean accept(File dir, String name) {
				// TODO 自动生成的方法存根
				if(name.contains("链表"))
					return true;
				else
					return false;
			}
		});
		for (File file2 : files) {
			System.out.println(file2.getName());
		}
	}
}

四:字节流:

1.输入流(IutputStream):

判断是否读取到字节的条件是n=-1; 

 2.输出流(OutputStream):

 构造方法:FileOutputStream(String,boolean) boolean代表输入的内容是追加还是覆盖,true为追加。当文件不存在时,自动创建文件。

public class F
{
	public static void main (String [] args) throws Exception
	{
		//1.读
	
		InputStream is=new FileInputStream("D:\\代码\\firstDemo\\src\\firstDemo\\example");
		File f=new File("D:\\代码\\firstDemo\\src\\firstDemo\\example");
		System.out.println(f.getAbsoluteFile());//打印文件的绝对路径
		System.out.println(f.isFile());		//判断是否是文件
		//1.一次性读
		long size=f.length();
		byte[] buffer=new byte[(int) size];
		int n=is.read(buffer);
		System.out.println(new String(buffer));
		is.close();
		
		//2.一个一个字节读
		int n1;
		while((n1=is.read())!=-1)
		{
			System.out.print((char) n1);
		}
		
		//3.n个n个字节读
		byte[] buffer1=new byte[3];
		int len;
		while((len=is.read(buffer1))!=-1)
		{
			System.out.print(new String(buffer1,0,len));
		}
		
		
		//2.写
		OutputStream os=new FileOutputStream("D:\\代码\\firstDemo\\src\\firstDemo\\example");
		byte[] buffer2="我爱中国\r\naaa".getBytes();
		os.write(buffer2);
		os.close();

		
		//3.复制
		InputStream is1=new FileInputStream("D:\\代码\\firstDemo\\src\\firstDemo\\example");
		OutputStream os1=new FileOutputStream("D:\\代码\\firstDemo\\src\\firstDemo\\example1");
		byte[] buffer3=new byte[20];
		int len1;
		while((len1=is1.read(buffer3))!=-1)
		{
			os1.write(buffer3,0,len1);
		}
		
		
		File f1=new File("D:\\代码\\firstDemo\\src\\firstDemo\\example1");
		System.out.println(f1.delete());
	}
}

五:字符流:

1.输入流(FileReader):

2.输出流(FileWriter):  

继承了FileOutputStream方法。

import java.io.Reader;
import java.io.Writer;
import java.io.FileWriter;
public class F
{
	public static void main(String [] args) throws Exception
	{
		Reader fr=new FileReader("D:\\代码\\firstDemo\\src\\firstDemo\\example");
		//1.读
		//1.一个一个字符读
		int n;
		while((n=fr.read())!=-1)
		{
			System.out.print((char) n);
		}
		
		//2.n个n个读
		char[] arr=new char[3];
		int n1;
		while((n1=fr.read(arr))!=-1)
		{
			System.out.print(new String(arr));
		}
		fr.close();
		
		//2.写
		Writer fw=new FileWriter("D:\\代码\\firstDemo\\src\\firstDemo\\example1");
		char[] arr1=new char[3];
		int len;
		while((len=fr.read(arr1))!=-1)
		{
			fw.write(arr1,0,len);
		}
		fr.close();
		fw.close();
	}
}

六:缓冲流:

1.输入流

(1):BufferedInputStream:

构造方法:BufferedInputStream(FileInputStream is);

(2):BufferedReader:

新增方法:String readLine(),一次读取一行数据。

2.输出流

(1):BufferedOutputStream:

构造方法:BufferedOutputStream(FileOutputStream os);

(2):BufferedWriter:

//1.字节缓冲流
InputStream is=new FileInputStream("D:\\代码\\firstDemo\\src\\firstDemo\\example");
BufferedInputStream bs=new BufferedInputStream(is);
int line;
while((line=bs.read())!=-1)	{
	System.out.println((char) line);
}		
		
byte[] arr=new byte[3];
int len;
while((len=bs.read(arr))!=-1)
{
	System.out.print(new String(arr,0,len));
}
		
		
//2.字符缓冲流
Reader is=new FileReader("D:\\代码\\firstDemo\\src\\firstDemo\\example");
BufferedReader br=new BufferedReader(is);
String line;
while((line=br.readLine())!=null)
{
	System.out.println(line);	
}
		
Writer fw=new FileWriter("D:\\代码\\firstDemo\\src\\firstDemo\\example1");
BufferedWriter bw=new BufferedWriter(fw);
String line;
while((line=br.readLine())!=null)
{
	bw.write(line);
    bw.newLine();
}
bw.close();
br.close();

 七:转换流:

1.输入流(InputStreamReader)

2.输出流(OutputStreamWriter)

InputStream is=new FileInputStream("D:\\代码\\firstDemo\\src\\firstDemo\\example");
Reader rs=new InputStreamReader(is);
BufferedReader br=new BufferedReader(rs);
String line;
while((line=br.readLine())!=null)
{
	System.out.println(line);
}
br.close();
rs.close();
		
InputStream is1=new FileInputStream("D:\\代码\\firstDemo\\src\\firstDemo\\example");
Reader rs1=new InputStreamReader(is1);
OutputStream os=new FileOutputStream("D:\\代码\\firstDemo\\src\\firstDemo\\example1");
Writer ws=new OutputStreamWriter(os);
char[] arr=new char[10];
int len;
while((len=rs1.read(arr))!=-1)
{
	ws.write(arr,0,len);
	System.out.print(new String(arr,0,len));
}
is1.close();
ws.close();

八:打印流:

作用:向文件中输入。

1.printStream(字节打印流):

方法:print()/println();向文件中输出任意字符。

2.printWriter(字符打印流):

方法同上。

PrintStream ps=new PrintStream(new FileOutputStream("D:\\代码\\firstDemo\\src\\firstDemo\\example1",true),true);
ps.println(false);
ps.println(99);
ps.println("床前明月光");
ps.write(97);
		
PrintWriter pw=new PrintWriter(new FileWriter("D:\\代码\\firstDemo\\src\\firstDemo\\example1",true),true);
pw.println("床前明月光");
pw.close();

3.重定向:

将本该从控制台输出的数据改为输出到文件中

Systm.setOut(打印流对象);

九:数据流:

1.输入流(DataInputStream)

2.输出流(DataOutputStream)

常用方法:writeUtf();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值