InputStream(字节输入流)和Reader(字符输入流)通俗的理解都是读(read)的。
OutputStream(字节输出流)和Writer(字符输出流)通俗的理解都是写(writer)的。
public class Test {
public static void main(String[] args) throws Exception{
File file=new File("aa.txt");//文件默认就创建在你创建的项目下面,刷新即可看到
System.out.println(file.exists());//判断文件是否存在
file.createNewFile();//创建文件,不是文件夹
System.out.println(file.exists());//再次判断是否存在
System.out.println(file.getName());//获取文件的名字
System.out.println(file.getAbsolutePath());//获取文件的绝对路径
System.out.println(file.getPath());//获取文件的相对路径
System.out.println(file.getParent());//获取文件的父路径
System.out.println(file.canRead());//文件是否可读
System.out.println(file.canWrite());//文件是否可写
System.out.println(file.length());//文件的长度
System.out.println(file.lastModified());//文件最后一次修改的时间
System.out.println(file.isDirectory());//判断文件是否是一个目录
System.out.println(file.isHidden());//文件是否隐藏
System.out.println(file.isFile());//判断文件是否存在
}
}
list()获取某个目录下所有的文件或者文件夹:
File file=new File("D:/");//指定文件目录
String[] str=file.list();//获取指定目录下的所有文件或者文件夹的名称数组
for(String s : str){//加强for循环遍历输出
System.out.println(s);
}
File file=new File("D:/");//指定文件路径
File[] f=file.listFiles();//获取指定目录下的所有文件或者文件夹的File数组
for(File fi : f){//加强for循环遍历输出
System.out.println(fi);
}
获取某种格式的文件比如获取某种后缀的图片,并输出文件名:
File file = new File("D:");
String[] str = file.list();
for (String s : str) {
if (s.endsWith(".jpg") || s.endsWith(".png")) {//如果后缀是这种格式的就输出
System.out.println(s);
}
}
FileInputStream和FileOutputStream进行拷贝文本或者图片或者歌曲
FileInputStream fis=new FileInputStream("d:aaa.txt");
FileOutputStream fos=new FileOutputStream("d:bbb.txt");
//如果没有bbb.txt,会创建出一个
int b;
while((b=fis.read())!=-1){
fos.write(b);
}
fis.close();
fos.close();
FileInputStream和FileOutputStream定义小数组进行读写操作:
FileInputStream fis = new FileInputStream("d:aaa.txt");
FileOutputStream fos = new FileOutputStream("d:bbb.txt");
int len;
byte[] arr = new byte[1024 * 8];//自定义字节数组
while((len = fis.read(arr)) != -1) {
//fos.write(arr);
fos.write(arr, 0, len);//写出字节数组写出有效个字节个数
}
//IO流(定义小数组)
//write(byte[] b)
//write(byte[] b, int off, int len)写出有效的字节个数
fis.close();
fos.close();
IO流(BufferedInputStream和BufferOutputStream)
FileInputStream fis = new FileInputStream("d:aaa.txt");
FileOutputStream fos = new FileOutputStream("d:bbb.txt");
BufferedInputStream bis=new BufferedInputStream(fis);
//使用装饰模式,把fis装饰进去bis中。使用缓冲读取速度变快
BufferedOutputStream bos=new BufferedOutputStream(fos);
int b;
while((b=bis.read())!=-1){
bos.write(b);
}
bis.close();
bos.close();
FileReader fr=new FileReader("d:aaa.txt");
int b;
while((b=fr.read())!=-1){
//System.out.print((char)b);//int类型转为字符型
}
fr.close();
//FileWriter类的write()方法可以自动把字符转为字节写出
FileWriter fw = new FileWriter("d:aaa.txt",true);
fw.write("d:aaa");
fw.close();
//字符流的拷贝
FileReader fr2 = new FileReader("d:aaa.txt");
FileWriter fw2 = new FileWriter("d:bbb.txt");
int ch;
while((ch = fr2.read()) != -1) {
fw2.write(ch);
}
fr2.close();
fw2.close();
BufferedReader br=new BufferedReader(new FileReader("d:aaa.txt"));
BufferedWriter bw=new BufferedWriter(new FileWriter("d:bbb.txt"));
//BufferedReader和BufferedWriter的使用:
int b;
while((b=br.read())!=-1){
bw.write((char)b);
}
br.close();
bw.close();