I/O系统:
File类
File类是用于处理文件和文件夹的API,它既可以表示一个文件,也可以表示文件夹;
File file=new File(“文件夹或者文件路径");
System.out.println("是否可写: "+file.canWrite());
System.out.println("是否是文件夹:"+file.isDirectory());
System.out.println("是否是文件: "+file.isFile());
创建或删除文件夹
File file1=new File(“文件夹”);
file1.mkdirs();
//或者使用 file1.mkdir();
其中mkdir只能在已知的目录下创建文件夹;而
mkdirs可以在不存在的目录下创建文件夹
此时file1.isDirectory()为true
//删除文件夹
file1.delete()
创建或删除文件
File file1=new File(“文件路径”);
file1.createNewFile();
此时file1. isFile()为true
//删除文件
file1.delete()
得到文件夹下的文件列表
//得到file1文件夹下的所有文件名
String[]filenames=file1.list();
// 得到file1文件夹下的所有文件对象
File[]files=file1.listFiles();
过滤文件夹
File[]files=file1.listFiles(FilenameFilter的实现对象);
输入和输出的概念
Java中Inputstream和Reader及其子类都拥有read方法(重载方法),用于读取数据(如字节);
Java中Outputstream和Writer及其子类都拥有write方法,用于往某处写入数据。
InputStream 是表示从某些数据源中读取数据时产生的一个流对象,流对象产生后,我们就开启了数据读取的通道。
InputStream下常用的有FileInputStream子类,可以帮助我们以字节为单位读取文件
首先第一步:通过文件来创建具体文件流对象
File file= newFile("文件路径");
InputStream in=newFileInputStream(file);
第二步由于是字节的方式读取,所以我们创建字节数组,便于接收数据
byte[] bytes =newbyte[200];
第三步通过循环判断是否存在数据,存在就把数据读入到字节数组
int length =in.read(bytes);
while (length!= -1) {
String s = newString(bytes,0,length);
r=in.read(bytes);
System.out.println(s);
}
最后,我们需要关闭流对象
in.close():
OutputStream 表示为某个文件(或其他数据源)输出数据的一个流对象。流对象产生后,我们就开启了写数据的通道。
OutputStream下常用的实现类是FileOutputStream,可以帮组我们输出内容(写文件)
和InputStream读取文件的步骤类似,write方法可以传入int或byte数组,一般情况下,我们可以把字符串转化为字节数组。
FileOutputStream out=newFileOutputStream("E:\\test\\test.txt");
String content="我是内容";
byte[]b=content.getBytes();
out.write(b);
out.close();
Writer 和Reader支持Unicode字符,非面向字节的数据读取和写入API
Writer 和Reader下的FileWriter和FileReader 常用于处理文件。
对于Writer首先我们仍然要用File来表示文件,然后把文件对象传给输出对象(写对象),通过写对象来输出内容到文件。
File fx=newFile("E:\\test\\test.txt");
FileWriter fw=newFileWriter(fx);
fw.write("我使用了FileWriter");
fw.write("我来了 你在哪儿?");
fw.close();
对于Reader首先我们仍然要用File来表示文件,然后把文件对象传给输入对象(读对象),然后把内容读取到字符数组,最后把字符数组转化为字符串
FileReader fr=newFileReader(fx);
需要创建字符数组
char [] cbuf=newchar[1024];
int len=fr.read(cbuf);
System.out.println(newString(cbuf,0,len));
fr.close();
使用缓冲器来包装Reader和Writer
对于writer,我们可以使用BufferedWriter来包装
BufferedWriter out=newBufferedWriter(new FileWriter(fileName));
//写内容
out.write("helloworld");
//输出新的一行(换行)
out.newLine();
out.write(“继续写内容”);
out.close();
对于Reader,我们可以使用BufferedReader来包装
BufferedReader in = newBufferedReader(new FileReader(fileName));
String line =in.readLine();
while (line != null) {
System.out.println(line);
line = in.readLine();
}
in.close();