IO流之File类和打印流【JAVA基础】

File类

构造函数 File dir=new File(“D:\JAVA学习”);
File类常见方法:

1.创建
  boolean creatNewFile();
  在指定位置创建文件,如果该文件已经存在,则不创建,返回false
  和输出流不一样,输出流对象一建立创建文件,而且文件已经存在,会覆盖。
  
  boolean mkdir();创建文件夹
  boolean mkdirs();创建多级文件夹
2.删除
  boolean delete();删除失败返回false
  void deleteOnExit();在程序退出时删除指定文件
3.判断
  boolean exists();文件是否存在
  boolean canExecute();是否是可执行文件的路径
  
  isFile;是否是文件
  isDirectroy();是否是文件夹
  isHidden();是否隐藏
  isAbsolute()是否是绝对路径
4.获取信息
  getName();
  getPath();
  getParent();返回绝对路径中父目录,如果获取的是相对路径,返回空
  getAbsolutePath();
  long lastModeified();返回最后一次修改的值
  long length();返回文件的长度
5.获取文件列表
  1.返回可用的文件系统根:File.listRoots();
  2.返回当前目录下的所有文件:File.list();  返回一个字符串数组,该目录必须存在
    返回满足指定过滤器的文件:File.list(FilenameFilter filter)
  3.返回当前目录下的文件的绝对路径;  File.listFile(); 返回File对象数组

File-文件列表-案例

package 黑马IO流_File类;

import java.io.File;
import java.io.FilenameFilter;
/*
File-文件列表
1.返回可用的文件系统根:File.listRoots();C盘D盘等
2.返回当前目录下的所有文件:File.list();  返回一个字符串数组,该目录必须存在
  返回满足指定过滤器的文件:File.list(FilenameFilter filter)
3.返回当前目录下的文件的绝对路径;  File.listFile(); 返回File对象数组
 */
public class FileDemo2 {

	public static void main(String[] args) {
		listRootsDemo();
	}
	public static void listDemo2() {
		File dir=new File("D:\\JAVA学习");
		String[] arr=dir.list(new FilenameFilter() {
			public boolean accept(File dir,String name) 
			{
				return name.endsWith(".txt");
			}
		});
		for(String name:arr)
		{
			System.out.println(name);
		}
	}
	public static void listDemo() {
		File f=new File("D:\\");
		
		String[] names=f.list();
		for(String name:names)
		{
			System.out.println(name);
		}
	}
	public static void listRootsDemo() {
		File[] files =File.listRoots();
		
		for(File f:files) 
		{
			System.out.println(f);
		}
	}

}

案例-存储java文件的绝对路径,到一个文本文件中

package 黑马IO流_File类;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/*
练习:
将一个指定目录下的java文件的绝对路径,存储到一个文本文件中
建立一个java文件列表文件。

思路:
1.对指定的目录进行递归
2.获取递归过程中所有java文件的路径
3.将这些路径存储到集合中
4.将集合中的数据写入到一个文件中
 */
public class JavaFileList {

	public static void main(String[] args) throws IOException
	{
		File dir=new File("D:\\JAVA学习\\src");
		List<File> list=new ArrayList<File>();
		fileToList(dir,list);
		System.out.println(list.size());
		
		File file=new File(dir,"javalist.txt");
		writeToFile(list,file.toString());
	}
	public static void fileToList(File dir,List<File> list) {
		File[] files =dir.listFiles();
		for(File file:files) 
		{
			if(file.isDirectory())
				fileToList(file,list);
			else
			{
				if(file.getName().endsWith(".java"))
					list.add(file);
			}
		}
	}
	public static void writeToFile(List<File> list,String javaListFile)throws IOException
	{
		BufferedWriter bufw=null;
		try 
		{
			bufw=new BufferedWriter(new FileWriter(javaListFile));
			for(File f:list)
			{
				String path=f.getAbsolutePath();
				bufw.write(path);
				bufw.newLine();
				bufw.flush();
			}
		}
		catch(IOException e)
		{
			throw e;
		}
		finally
		{
			try
			{
				if(bufw!=null)
					bufw.close();
			}
			catch(IOException e)
			{
				throw e;
			}
		}
	}

}

运行结果:
运行

打印流

字节打印流:
PrintStream
构造函数可以接收的参数类型
1.File对象 (File file)
2.字符串路径 (String url)
3.字节输出流 (OutputStream)
字符打印流:
PrintWriter
构造函数可以接收的参数类型
1.File对象 (File file)
2.字符串路径 (String url)
3.字节输出流 (OutputStream)
4.字符输出流 (Writer)

简单案例

package 黑马IO流;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class PrintStreamDemo {

	public static void main(String[] args) throws IOException
	{
		BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
		PrintWriter out=new PrintWriter(new FileWriter("a.txt"),true);
		
		String line=null;
		while((line=bufr.readLine())!=null)
		{
			if("over".equals(line))
				break;
			out.println(line.toUpperCase());
		}
		out.close();
		bufr.close();

	}

}

原创文章 27 获赞 2 访问量 1124

猜你喜欢

转载自blog.csdn.net/liudachu/article/details/105759347