文件:
本质:一组数据的集合;
目录:是特殊的文件,文件和目录;
一组数据集合---文件(二进制,字节流)
目录也是特殊的文件:包含文件和目录。
文件的本质:数据的集合
文件的本质:路径的抽象。
String pathname="D:\x\1.txt";
new File(pathname);
2、文件存储在什么地方?
内存,硬盘,磁盘,光盘等存储介质中。
3、怎么创建?
new File();-----构造器
new File("D:\X\1.txt");
new File("D:\x\","1.txt");
new File(new File("D:\x\"),"1.txt");
new File(URL);
new File();
注意点:主要关注的是File的属性,而不是File中的内容。
凡是和数据的传输,读写有关的都需要使用到
输入流和输出流。
4、怎么使用?
文件过滤器:.doc..txt.文件,目录。
FilenameFilter
extends,implements-----
深度优先遍历
核心:从做向右。
广度优点遍历
核心:层级遍历。
5、流:
为了传输数据。
流是让物体流花的工具。
将文件以流的形式在网络中传输。
可以使物体的形态变化。
输入流和输出流:没有方向,程序而言。
读----输入流,写-----输出流
字节流:InputStream OutputStream
字符流:Reader Writer
注意:两个字节等于一个汉字。
汉:(7489275 5432589)字符流。
缓冲流,处理流,节点流。。。。
路径(文件/目录) File
File f1 = new File ("c:\aa\1.txt"); //查询一个文件路径
====File f1 = new File("c:\aa\","1.txt");
System,out.println(f1.length());
File f1 = new Filre ("c:\aa\1.txt");
try{
file.createNewFile(); //创建一个文件
catch(IOException e){
e.printStrackTrace;
}
//创建临时文件
File file1 = file.createTempFile("112312",".txt"new File("c:\aa"));
file1.deleteOnExit(); //jvm关闭临时文件
while(true){ //死循环
}
//通过静态方法得到所有盘符信息
File []listfile = File.listRoots();
for(File l:listfile){
System.out.printil(l);
}
//判断是不是文件夹,是不是目录,是否为空,相对路径,绝对路径
file.isFile();
file.isDirectory();
file.exists();
file.getAbsolutePath();
file.getParentFile();
//文件过滤器
public class Test {
File f1 = new Filre ("c:\aa");
public static void main(String[] args) throws IOException {
String[] file3=file.list((FilenameFilter) new MyFileNameFilter());
for (String f:file3) {
System.out.println(f);
}
file.delete();
}
}
class MyFileNameFilter implements FilenameFilter{
public boolean accept(File dir, String name) {
return name.endsWith(".wps");
}
}
//删除文件
file.delete();
public static void main(String[] args) {
File f1 = new File("c:\aa");
String[] filearr = f1.list(); //只得到文件的名称
for (String f : filearr) {
System.out.println(f);
}
}
//深度优先遍历
public static void deep(File dir){
System.out.println("------>"+dir.getName());
if(dir.isFile()){
return;
}else{
File[]fs = dir.listFiles(); //listFiles子文件 File数组接收 dir是文件的缩写
if(fs!= null&&fs.length>0){
for(File f : fs){
deep(f);
}
}
}
}
public static void main(String[] args) {
File f1 = new Filre ("c:\aa\1");
deep(f1);
}
队列:Queue
//广度优先遍历
public static void width(File dir){
//1.创建队列
Queue<File> qu = new LinkedList<File>();
//2.根元素入队
qu.offer(dir);
while(!qu.isEmpty()){
//3.队首元素出队
File file3=qu.poll();
if(file3.isFile()){
System.out.println("=======这个是文件======="+file3.getName());
}else{
System.out.println("=============这个是目录============="+file3.getName());
File [] file4=file3.listFiles();
for(File f:file4){
//4.入队,但是必须等待前一个任务结束,才能出队
qu.offer(f);
}
}
}
}
public static void main(String[] args) {
File f1 = new Filre ("c:\aa\1");
width(f1);
}
流:
传输方式
- 输入流和输出流:
- inputStream,outputStream:字节流
- reader,writer:字符流
- 4877646 4864646=汤
- 流本身没有方向。
public class Test03 {
//字符流是16位的unicode编码集
public static void main(String[] args) {
File src=new File("c:\aa\123.avi");
File target=new File("c:\aa\a\1.avi");
try {
InputStream in = new BufferedInputStream(new FileInputStream(src),1024);
OutputStream out = new BufferedOutputStream(new FileOutputStream(target),1024);
int temp = -1;
while((temp=in.read())!=-1){
out.write(temp);
}
// while((in.read(b))!=-1){
// out.write(b);
// }
out.flush();
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public class Test3 {
public static void main(String[] args) {
//字符流是16位的unicode编码集
//案例1:得到文本中的数据
try {
File file=new File("C:\a\1.txt");
//创建字节流
//字节输入流用于读文本文件
InputStream is=new FileInputStream(file);
//创建字符流
// 字节输出流向文本文件写输出流
Reader reader=new InputStreamReader(is);
int temp=-1;
while((temp=reader.read())!=-1){
System.out.print((char)temp);
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
字符流;
Reader
Writer
public class Test4 {
public static void main(String[] args) throws IOException,SQLException {
//字符流是16位的unicode编码集
//案例1:得到文本中的数据
File file=new File("C:\a\1.txt");
//创建字节流
OutputStream os=new FileOutputStream(file);
//创建字符流
Writer writer=new OutputStreamWriter(os);
String s="花开花谢花满天,红袖想笑有谁怜!";
writer.write(s);
//强制提交
writer.flush();
//释放资源
writer.close();
os.close();
}
}