欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-05 15:04:48
...

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;
			}
		}
	}

}

运行结果:
IO流之File类和打印流【JAVA基础】

打印流

字节打印流:
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();

	}

}

相关标签: Java笔记