学习的起点是问题,而不是知识。
当你专注于研究探索你好奇事情时,你真的会沉溺于学习无法自拔,感觉不到时间的流逝。而让你死记硬背的时候,你一定更多地是充满绝望。
_________
File是一个类,可以有构造器创建其对象,对应一个文件或文件目录。
**list()方法是返回某个目录下的所有文件和目录的文件名,返回的是String数组
listFiles()方法是返回某个目录下所有文件和目录的绝对路径,返回的是File数组
访问文件名:getName(); getPath(); getbsoluteFile();
getAbsoluePath();获取绝对路径 getParent();获取上级目录 file1.renameTo(File newName);
文件检测:exists(); canWrite() canRead(); isFile();是否文件
isDirectory(); 是否文件夹 file.length();文件大小
文件最后修改时间:simpleDateFormat(“YYYY-mm-dd hh:mm:ss”).format(new Date(file.lastModfied() ) );
文件操作相关
创建
递归遍历文件夹/文件
public static void main(String[] args) {
File file=new File("F:/一阶段笔记");
printFile(file);
}
public static void printFile(File file){
File[] file1=file.listFiles(); //listFiles
for (File file2 : file1) {
if(file2.isDirectory()){ //是文件夹的话继续遍历里面的文件
printFile(file2); //递归
}
System.out.println(file2);
}
}
FileOutputStream
fos.write(“abc”.getBytes()); 往文件中写入abc String 转为字节类型
fos.write(“abc\r\n”); windows下\r\n换行
IO流
inputStream 读入数据
自定义缓冲区
字节流 -文件的复制
close()关闭资源 规则 : 先开后关,先关读入的,再关写出。
字节流 文件的复制–自定义缓冲,一次读入字节数 new byte[]
FileInputStream fi=new FileInputStream("F:/一阶段笔记/a.txt");// 读入文件数据
FileOutputStream fos=new FileOutputStream("F:/一阶段笔记/b.txt");//存在b.txt直接覆盖,没有就创建
byte[] by=new byte[3]; //一次读3个字节
int j;
while((j=fi.read(by))!=-1){
fos.write(by,0,j); //一次写出3个字节
System.out.println(new String(by,0,j)); //
}
fos.close();
}
FileReader FileWriter 字符流
1.字符流 读入字符 , 2.字符流 键盘输入字符
public static void main(String[] args) throws IOException {
FileReader fr=new FileReader("F:/一阶段笔记/a.txt");
char[] ch=new char[1024];// 读入字符数据 char[]
int i;
while((i=fr.read(ch))!=-1){//System.out.println(fr.read(ch, 0, i));
System.out.println(new String(ch, 0, i));
}
FileWriter fw=new FileWriter("F:/一阶段笔记/b.txt");
Scanner sc=new Scanner(System.in);
System.out.println("向b.txt中输入内容,输入quit是结束");
while(true){
String string=sc.nextLine();
if("quit".equals(string)){
break;
}
fw.write(string+"\r\n");//换行
fw.flush();
}
fw.close();
}