20201013黄春跃
20201013黄春跃
知识点:
File
File的方法:
File file = new File("D:\\Temp");
System.out.println("D:\\Temp是否存在:" + file.exists());
System.out.println("D:\\Temp是否是文件:" + file.isFile());
System.out.println("D:\\Temp是否是路径:" + file.isDirectory());
System.out.println("D:\\Temp是否是绝对路径:" + file.isAbsolute());
File fod = new File(file,"003.png");
System.out.println("****************************");
System.out.println("003.png是否存在:" + fod.exists());
System.out.println("003.png是否是文件:" + fod.isFile());
System.out.println("003.png是否是路径:" + fod.isDirectory());
System.out.println("003.png是否是隐藏文件:" + fod.isHidden());
System.out.println("获取003.png的绝对路径:" + fod.getAbsolutePath());
System.out.println("获取003.png的路径:" + fod.getPath());
System.out.println("获取003.png的名字:" + fod.getName());
// 获取文件的最后修改时间
long time = fod.lastModified();
Date date = new Date(time);
System.out.println("文件的最后修改时间为:" + date);
System.out.println("003.png的大小为:" + fod.length()/1024.0 + "KB");
//获取file路径下的所有文件名称组成的数组
String[] fileNames = file.list();
System.out.println("D:\\Temp路径下的所有文件名称组成的数组:" + Arrays.toString(fileNames));
for(String s :fileNames ) {
System.out.print(s + " ");
}
System.out.println("");
//获取目录内所有的目录和文件组成的数组
File[] files = file.listFiles();
System.out.println("D:\\Temp路径下的所有文件路径组成的数组:" + Arrays.toString(files));
for (File f : files) {
System.out.print(f + " ");
}
System.out.println("");
System.out.println("**************");
System.out.println(fod.getParent());//获取实例文件的上一级路径。
File fods = file.getParentFile();
System.out.println(fods);
String[] fileNamess = fods.list();
System.out.println(Arrays.toString(fileNamess));
}
输出结果:
D:\Temp是否存在:true
D:\Temp是否是文件:false
D:\Temp是否是路径:true
D:\Temp是否是绝对路径:true
****************************
003.png是否存在:true
003.png是否是文件:true
003.png是否是路径:false
003.png是否是隐藏文件:true
获取003.png的绝对路径:D:\Temp\003.png
获取003.png的路径:D:\Temp\003.png
获取003.png的名字:003.png
文件的最后修改时间为:Sat Jul 18 16:35:48 CST 2020
003.png的大小为:1.9921875KB
D:\Temp路径下的所有文件名称组成的数组:[001.tif, 002.tif, 003.png, 004.png, 005.png, buffer-input.txt, file-input.txt, fileSon, fileSon.txt, output.txt, output2.txt, output3.txt, time.txt, TxGameDownload, 他是龙_超清.kux]
001.tif 002.tif 003.png 004.png 005.png buffer-input.txt file-input.txt fileSon fileSon.txt output.txt output2.txt output3.txt time.txt TxGameDownload 他是龙_超清.kux
D:\Temp路径下的所有文件路径组成的数组:[D:\Temp\001.tif, D:\Temp\002.tif, D:\Temp\003.png, D:\Temp\004.png, D:\Temp\005.png, D:\Temp\buffer-input.txt, D:\Temp\file-input.txt, D:\Temp\fileSon, D:\Temp\fileSon.txt, D:\Temp\output.txt, D:\Temp\output2.txt, D:\Temp\output3.txt, D:\Temp\time.txt, D:\Temp\TxGameDownload, D:\Temp\他是龙_超清.kux]
D:\Temp\001.tif D:\Temp\002.tif D:\Temp\003.png D:\Temp\004.png D:\Temp\005.png D:\Temp\buffer-input.txt D:\Temp\file-input.txt D:\Temp\fileSon D:\Temp\fileSon.txt D:\Temp\output.txt D:\Temp\output2.txt D:\Temp\output3.txt D:\Temp\time.txt D:\Temp\TxGameDownload D:\Temp\他是龙_超清.kux
**************
D:\Temp
D:\
[$RECYCLE.BIN, 13-311 2018年生源地助学贷款表.xls, 13-311 6.7, 13-311 6.7.rar, 13-311安全课作业, 13-311安全课作业.rar, 13-311面试自我介绍, 13-311面试自我介绍.rar, 13311信息安全, 13311信息安全.rar, 13311到梦空间, 13311到梦空间x, 13311到梦空间x.rar, 1705200302黄春跃.doc, 1705200416崔映帆.docx, 2017级软件工程崔映帆1705200416.docx, 311团课, 311团课.rar, 311寝室在校生银行卡信息统计.xlsx, 360安全浏览器下载, 5.4网上团课, 5.4网上团课.rar, 99csv5.1.0.0, a python, aaa, Autodesk ReCap 2016, BaiduNetdiskDownload, ChromeSetup.exe, c语言, ebook, IQIYI Video, java, KSWJJ, LenovoDrivers, lll, MATLAB R2014a, MyEclipseGen.class, MyEclipseGen.java, new_gjzq_v6, person, picture, Program Files, Program Files (x86), python期末复习题(软工).docx, QQMusic, release.apk, SGreen浏览器下载, System Volume Information, Temp, tessdata3.0, Test.class, Untitled-1.txt, Users, ww, 二级MS OFFICE无纸化考试模拟软件, 信息安全报告黄春跃.docx, 创业课期末作业, 创业课期末作业.rar, 历史课, 国家安全与你我相关 软工三班 黄春跃 302.docx, 学籍证明(在校学生使用).doc, 安全教育观后感, 安全教育观后感.rar, 安卓报告黄春跃.doc, 安卓期末, 安卓期末.rar, 安卓课期中作业黄春跃1705200302, 安卓课期中作业黄春跃1705200302.rar, 心 的 征 途.docx, 心协策划文件2018-2019, 心协策划文件2018-2019.rar, 搜狗高速下载, 敬老院看望老人策划书.doc, 数字电路, 数学建模, 混合框架开发考核报告.doc, 策划部部长竞选演讲.pptx, 马昭旭竞选ppt.pptx, 黄春跃 竞选演讲.pptx, 黄春跃(1)]
File file = new File("d://temp");
String path = file.getAbsolutePath();
System.out.println("获取路径用getPath方法 --->" + file.getPath());
System.out.println("获取绝对路径用getAbsolutePath方法 --->" + path);
System.out.println("获取规范路径用getCanonicalPath方法 ---> " +file.getCanonicalPath());//获取规范路径
System.out.println(file.canRead()); // true
System.out.println(file.canWrite()); // true
System.out.println(file.canExecute());// true
File fileSon = new File("d://temp//fileSon//f5/f4/f3/f2/f1");
if(!fileSon.exists()) {
fileSon.mkdirs();//创建多级文件夹
}
System.out.println(fileSon.exists());
System.out.println("**********************");
File f1 = new File("D:/ebook/f5/f4/f3/f2/f1/斗破苍穹.txt");
if (!f1.getParentFile().exists()) {//如果斗破苍穹.txt的父路径不存在
f1.getParentFile().mkdirs();//就创建其父目录
// file.mkdirs();
}
f1.createNewFile();//然后再创建文件
//修改文件名
System.out.println(f1.exists());
File f2 = new File("D://ebook/f5/f4/f3/f2/f1/dpcq.txt");//当 新文件名称 和原来文件的路径不一样时表示移动文件并修改名字,如果路径一样就只是修改名字
System.out.println(f2.getAbsolutePath());
System.out.println(f1.renameTo(f2));
}
输出结果:
获取路径用getPath方法 --->d:\temp
获取绝对路径用getAbsolutePath方法 --->d:\temp
获取规范路径用getCanonicalPath方法 ---> D:\Temp
true
true
true
true
**********************
true
D:\ebook\f5\f4\f3\f2\f1\dpcq.txt
true
文件过滤器
package com.itlaobing.demo;
import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;
public class demo05 {
public static void main(String[] args) {
FileFilter filter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.length() > 3 * 1024;
}
};
File f = new File("D://temp");
File[] fileNames = f.listFiles(filter);
System.out.println(Arrays.toString(f.listFiles()));
System.out.println(Arrays.toString(fileNames));
System.out.println(f.length());
}
}
计算磁盘文件的大小
package com.itlaobing.exe;
import java.io.File;
import java.util.Arrays;
public class demo06 {
static long size = 0;
// System.out.println(Arrays.toString(fs));
public static long size(File fod) {
File[] files = fod.listFiles();
for(File f :files) {
// System.out.println(f);
if(f.isFile()) {
size += f.length();
}
else {
size(f);
size += f.length();
}
}
return size;
}
public static void main(String[] args) {
//计算出磁盘上指定文件夹的实际大小。
// File fod = new File("D://person");
long length = size(new File("D://temp"));
System.out.println(length);
System.out.println(length/1024/1024/1024.0);
}
}
InputStream
package com.itlaobing.liu;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class demo01 {
public static void main(String[] args) throws FileNotFoundException {
//第一种创建方式
FileInputStream fi = new FileInputStream("D://temp");
//第二种创建方式
File file = new File("D://temp");
FileInputStream input = new FileInputStream(file);
}
}
package com.itlaobing.liu;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class demo02 {
public static void main(String[] args) throws IOException {
// 使用绝对路径创建一个File实例,它表示指定路径对应的目录或文件
File file = new File("D://temp/file-input.txt");
// 如果路径在磁盘上存在并且表示一个文件
if(file.exists() && file.isFile()) {
//创建输入流对象
FileInputStream fis = new FileInputStream(file);
// 文件长度
System.out.println("共有" + file.length() + "个字节没有读取");
int i = fis.read();
System.out.println("读取到的第一个字节为:" + (char)i);
System.out.println("还剩" + fis.available() + "个字节没读");// 因为刚刚读取一个字节,所以减少一个
fis.skip(3);//跳过三个字节
System.out.println("跳过3个字节后,还剩" + fis.available() + "个字节没读");
int i2 = fis.read();
System.out.println("读取到的字节是:" + (char)i2);
fis.close();
}
}
}
复制文件
package com.itlaobing.liu;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class copy {
public static void main(String[] args) throws IOException {
/**
* 复制文件: 1.读取文件 2.输出文件
*/
long start = System.currentTimeMillis();
// 创建一个 File 实例,表示被复制的源文件 ( 哪个文件将被复制 )
File source = new File("F://Youku Files/download/他是龙_超清.kux");
// 创建一个 File 实例,表示复制后的目标文件 ( 复制到哪里、叫什么名字 )
File target = new File("D:/temp", source.getName());
// 判断 被复制的文件 是否存在 且 是一个文件
if (source.exists() && source.isFile()) {
// 创建一个输入流,用于 读取 被复制的源文件中的内容
InputStream in = new FileInputStream(source);
// 创建一个输出流,用于 向 目标文件 中输出被复制的内容
OutputStream out = new FileOutputStream(target);
int n; // 声明一个变量用于统计实际读取到的字节数
// 1 << 20 表示 1024 * 1024 ,即缓冲区容量为 1MB
byte[] bytes = new byte[1 << 20]; // 创建一个字节缓冲区用于保存读取到的字节数据
// 从输入流中读取数据到字节数组中,并将实际读取到的字节数保存到n变量中,最后再与-1比较
while ((n = in.read(bytes)) != -1) {
// 将 bytes 数组中的 [ 0 , n ) 之间的字节 写入 到 输出流中
out.write(bytes, 0, n); // 想一想为什么这里不直接使用out.write(bytes) ?
}
long end = System.currentTimeMillis(); // 获取从时间参照点到当前的纳秒数
System.out.println("复制文件总用时 " + (end - start)/1000 + "s");
// 关闭两个流 (后开的先关闭 )
out.close();
in.close();
}
}
}
今日总结:
今天花课余时间,把昨天的File都敲了了一遍,晚自习时间把今天学的流也都敲了一遍,但敲到复制文件那里已经十一点过了,应该寝室了,所以今天的作业还没来得及看。
点赞
评论留言