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;
}
}
}
}
运行结果:
打印流
字节打印流:
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();
}
}
上一篇: Android实现短信验证码自动填写
下一篇: 水晶报表图片不显示两种问题分析及解决方法