File类
1、File类的3个构造方法
//File三个构造方法
//实现的效果是一样的,推荐第一种
public class fileDemo1 {
public static void main(String[] args) {
File f1 = new File("d\\IDEA\\bin\\log.xml");
System.out.println(f1);
File f2 = new File("d\\IDEA\\bin","log.xml");
System.out.println(f2);
File f3 = new File("d\\IDEA\\bin");
File f4 = new File(f3,"log.xml");
System.out.println(f4);
}
}
2、File的创建方法
//File的创建方法
public class fileDemo2 {
public static void main(String[] args) throws IOException{
//如果文件不存在就创建文件,并返回true
//如果文件存在就不创建文件,并返回false
File f1 = new File("f:\\test\\java.txt");
System.out.println(f1.createNewFile());
//如果目录不存在就创建文件,并返回true
//如果目录存在就不创建文件,并返回false
File f2 = new File("f:\\test\\JavaSE");
System.out.println(f2.mkdir());
//如果目录不存在就创建文件,并返回true
//如果目录存在就不创建文件,并返回false
File f3 = new File("f:\\test\\JavaEE\\HTML");
System.out.println(f3.mkdirs());
}
}
3、File类的删除方法
//file的删除方法delete(),可以删除文件、目录
public class fileDemo3 {
public static void main(String[] args) throws IOException {
File f1 = new File("f:\\test\\js.txt");
System.out.println(f1.createNewFile());
System.out.println(f1.delete());//删除文件
File f2 = new File("f:\\JavaEE");
System.out.println(f2.mkdir());
System.out.println(f2.delete());//删除单层目录
}
}
4、File类的判断和获取功能
public class fileDemo4 {
public static void main(String[] args) {
File f1 = new File("f:\\test\\java.txt");
System.out.println(f1.isDirectory());//是否为目录false
System.out.println(f1.isFile());//是否为文件true
System.out.println(f1.exists());//是否存在true
System.out.println(f1.getAbsoluteFile());//返回绝对路径名
System.out.println(f1.getPath());//返回f1对象中封装的路径
System.out.println(f1.getName());//返回路径中文件的名称
File f2 = new File("f:\\test\\JavaSE");
//返回该目录下的文件、文件夹名称
String[] str = f2.list();
for(String strs: str){
System.out.println(strs);
}
//返回该路径下文件、文件夹的绝对路径名称
File[] files = f2.listFiles();
for(File file: files){
System.out.println(file);
}
//与上一个的区别就在于listFiles()下可以对内容做判断
File[] file2 = f2.listFiles();
for(File fi: file2){
if(fi.isFile()){
System.out.println(fi);
}
}
}
}
5、递归:
IO流
InputStream(抽象类)是所有字节输入流的超类,OutputStream(抽象类)是所有字节输出流的超类
1、字节流写数据基本介绍
//FileOutPutStream字节输出流,写入字节内容到文件中
public class FileOutPutStreamDemo1 {
public static void main(String[] args) throws IOException {
//创建字节输出流对象
FileOutputStream fos = new FileOutputStream("f:\\test\\java.txt");
fos.write(97);//调用字节输出流方法写入内容
fos.close();//关闭字节输出流通道
}
}
2、字节流写数据的3种方式
//字节流写入数据的三种方式
public class FileOutPutStreamDemo2 {
public static void main(String[] args) throws IOException {
//创建一个字节输出流对象
FileOutputStream fos = new FileOutputStream("F:\\test\\jsp.txt");
//第一种:基本的写入数据
fos.write(97);
fos.write(98);
fos.write(99);
fos.write(100);
fos.write(101);
fos.write(102);
//第二种:字节数组写入数据
byte[] bys = {97,98,99,100,101,102};
fos.write(bys);
//第二种附加:String字符串的getBytes()也可以写入字节数组数据
byte[] bytes = "abcdef".getBytes();
fos.write(bytes);
//第三种:字节数组写入数据,指定位置,指定长度
byte[] bys1 = {97,98,99,100,101,102};
fos.write(bys1,0,bys.length);
fos.write(bys1,2,3);
fos.close();
}
}
3、字符输出流实现换行、实现文本追加
//实现文本换行
//实现文本追加
public class FileOutPutStreamDemo3 {
public static void main(String[] args) throws IOException {
/*
windows系统识别换行:\r \n
Linux系统识别换行:\n
mac系统识别换行:\r
*/
// FileOutputStream fos = new FileOutputStream("f:\\test\\ps.txt");
//结果为true时,append追加内容到文件末尾
FileOutputStream fos = new FileOutputStream("f:\\test\\ps.txt",true);
for(int i=0;i<10;i++){
fos.write("abcdefgh".getBytes());
fos.write("\r\n".getBytes());
}
fos.close();
}
}
4、IO字节流异常处理
//IO字节流异常处理
public class FileOutPutStreamDemo4 {
public static void main(String[] args) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream("f:\\test\\net.txt");
fos.write("hello".getBytes());
}catch(IOException e){
e.printStackTrace();
}finally{
if(fos!=null){ //只有fos不等于null,才进行释放资源的操作
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}