Java IO学习第一天部分详解

初学Java,记录总结老师授课的IO基础笔记

IO流:(Input OutPut) 输入输出流: 输入 :将文件读到内存中  输出:将文件输出到其他地方。

IO技术的作用 : 主要就是解决设备和设备之间的数据传输问题。 比如:硬盘到---》内存  ,内存数据---》硬盘中   把键盘中的数据写入到内存。

IO的应用场景:
比如: 打卡机到出信息表
比如: 注册的时候图片的上传。
比如 : 下载功能
解析XML

数据保存到本地,数据一个永久保存。数据保存到磁盘上是以文件的形式存在的。

学习文件的操作

java 中如何操作文件:

java 中是通过File 文件类来操作文件和文件夹。

学习文件类的构造方法:

File(String pathname)  通过将给定路径名字符串转换为抽象路径名来创建一个新File实例

File file = new File(D:\\java学习/a.txt);

System.out.println("是否存在文件?" + file.exists());

File(File parent, String child)  根据parent 抽象路径名和child路径名字符串创建一个新的File实例

File parent = new File(D:\\);

File file = new File(parent,"java学习/a.text");

System.out.println("是否存在文件?" + file.exists());

File(String parent, String child)  根据parent 路径名字字符串和child 路径名字字符串创建创建一个新 File 实例

File file = new File("D:" + File.separator,"java学习/a.txt")

System.out.println("是否存在文件?" + file.exists());

//获取系统默认的分隔符
            //System.out.println(File.separator);

-----------------------------------------------------------------------------------------------------------------

路径问题:

绝对路径:文件在硬盘的完整路径。绝对路径一般都是以盘符开头 D:\\java学习  绝对路径

相对路径:相对路径就是资源文件相对当前程序所在的路径

File中的常用方法:

创建CreateNewFile()    在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回falsea

//在指定的位置创建一个空的文件

/*File file = new File("D:\\aa");
            System.out.println("通过指定的路径创建一个空的文件"+file.createNewFile());

mkdir() 在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。

1.不能够有同名的文件或文件夹 2.只能创建单级文件夹

File dir = new File("D:\\cc"); //
              System.out.println("创建文件夹成功吗"+dir.mkdir());

mkdirs() 在指定位置创建目录,这会创建路径中所有不存在的目录。

File dirs = new File("D:\\bb\\aa");
           System.out.println("创建文件夹成功吗?"+dirs.mkdirs());

renameTo(File dest) 重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,剪切时候不能操作非空的文件夹。移动/重命名成功则返回true,失败则返回false。

File file = new File("D:\\java学习/a.txt");
               System.out.println("是否找到该文件夹?"+file.exists());
               File destFile = new File("D:\\aabb"); //指的是重命名的名字
                System.out.println("重命名成功吗?"+file.renameTo(destFile));*/ // 重命名文件夹

// 重命名文件
                  File file = new File("D:\\aa");
                 System.out.println("重命名成功吗?"+file.renameTo(new File("D:\\aa.txt")));

/如果我是更改盘符 : renameTo 是做剪切的操作。
                    File file = new File("D:\\aa.txt");
                 System.out.println("重命名成功吗"+file.renameTo(new File("G:\\aa.txt")));

delete() 删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。

File file = new File("D:\\java学习/a.txt")

System.out.println("删掉了吗?" + file.delete());
              deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除

file.deleteOnExit();

System.out.println("哈哈");

------------------------------------------------------------------------------------------------------------------

public class Demo3{

public static void main(String[] args){

File file = new Flie ("D:\\a.txt");

System.out.println("存在吗?"+ file.exists());

File file2 = new Flie ("D:\\bb");

// File file3 = new Flie ("..\\..\\..\\bb");

//-----------------------------------------------------------------------------------

  获取方法:

           System.out.println("获取文件名称" +file.getName());  //获取文件名称,你写的是什么名就是什么名字。

System.out.println("获取路径" +file.getPath());

 System.out.println("获取文件的绝对路径" +file.getAbsolutePath());

System.out.println("获取文件的大小" +file. getTotalSpace());

//以字节为单位1kb=1024b  1M = 1024KB  1G = 1024M;

获取某个文件夹的大小:

//思路:!! 获取文件夹中所有的文件包括子文件夹中的文件,将所有文件的大小累加!!

System.out.println("获取父目录" +file. getParent()); //除了文件以外的所有部分

//想要删除某个文件夹一周前的数据。

!!以毫秒为单位的

System.out.println("最后一次修改的时间" + file.lastModified());

//转成平常的时间

long time = file.lastModified();

Date  date = new Date(time);

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println("最后一次修改的时间” +dateFormat.format(date));

//文件夹的操作

/* File[] files = File.listRoots(); //获取windows所有盘符

for(File file : files){

System.out.println("盘符"+ file);m

}*/

//获取指定文件夹下文件和子目录,子目录中的东西是获取不到的

/*  File file = new File("D:\\java学习/a.txt");

String[] nameStrings = file.list();

for(String string : nameStrings){

Syetem.out.println(String);

}*/

File file = new File("D:\\java学习/a.txt");

File[] files = file.listFiles();

for(File file2 : files){

System.out.println("name:" + file2.getName());

//判断file2指的是文件还是文件夹

if(file2.isDirectory()){

从子目录中再次获取值

File[] nextFiles = file2.listFiles();

for(File file3: nextFiles){

System.out.println("subname" + file3.getName());

}

}

}

//查找指定的后缀名的文件

/*    File file = new File("D:\\java学习/a.txt);

//定义一个过滤器

//FilenameFilter    一个接口

String[] strings = file.list(new MyFilter());

for(String string : string){

System.out.println(String);

}*/

/*判断方法:
                   exists() 文件或文件夹是否存在。
                   isFile() 是否是一个文件,如果不存在,则始终为false。
                   isDirectory() 是否是一个目录,如果不存在,则始终为false。
                   isHidden() 是否是一个隐藏的文件或是否是隐藏的目录。
                    isAbsolute() 测试此抽象路径名是否为绝对路径名。

*/

if(file.exists()){

System.out.println("是文件吗?" + file.isFile());

System.out.println("是文件吗?" + file.isDirectory());

System.out.println("是隐藏文件吗?" + file.isHidden());

System.out.println("是隐藏文件吗?" + file2.isHidden());

System.out.println("是绝对路径吗?" + file3.isAbsolute());

}

}

}

时间: 2024-10-01 04:29:59

Java IO学习第一天部分详解的相关文章

java io系列12之 BufferedInputStream详解

目录1. BufferedInputStream 介绍2. BufferedInputStream 源码分析(基于jdk1.7.40)3. 示例代码 BufferedInputStream 是缓冲输入流.它继承于FilterInputStream. BufferedInputStream 的作用是为另一个输入流添加一些功能,例如,提供"缓冲功能"以及支持"mark()标记"和"reset()重置方法".BufferedInputStream 本质

java基础学习——4、集合类详解

一.Java集合框架图 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等. 发现一个特点,上述所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法. 它的一个子接口Lin

java IO、NIO、AIO详解

概述 在我们学习Java的IO流之前,我们都要了解几个关键词 同步与异步(synchronous/asynchronous):同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步:而异步则相反,其他任务不需要等待当前调用返回,通常依靠事件.回调等机制来实现任务间次序关系 阻塞与非阻塞:在进行阻塞操作时,当前线程会处于阻塞状态,无法从事其他任务,只有当条件就绪才能继续,比如ServerSocket新连接建立完毕,或者数据读取.写入操作完成:而非阻塞则是不

Java提高学习之Object类详解(1)

转自:http://www.importnew.com/10304.html 问:什么是Object类? 答:Object类存储在java.lang包中,是所有java类(Object类除外)的终极父类.当然,数组也继承了Object类.然而,接口是不继承Object类的,原因在这里指出:Section 9.6.3.4 of the Java Language Specification:“Object类不作为接口的父类”.Object类中声明了以下函数,我会在下文中作详细说明. 1 prote

Java学习之道:详解Java解析XML的四种方法

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transform

J2EE学习篇之--JDBC详解

今天我们来说一下关于JDBC的相关知识,关于JDBC我想大家都不陌生了,而且我记得早就开始使用它了,记得那是大二的时候做课程设计,但是那时候是为了完成任务,所以遇到问题就google,那时候也没有时间去整理,所以这次就来详细说一下关于JDBC的知识 摘要: JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构成的API. J2SE的一部分,由java.sql,javax.sql包组成. 应用程序.JDBC API.数据库驱动及数据库之间的关系

Java并发编程之---Lock框架详解

Java 并发开发:Lock 框架详解 摘要: 我们已经知道,synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等.Lock 提供了比 synchronized更广泛的锁操作,它能以更优雅的方式处理线程同步问题.本文以synchronized与Lock的对比为切入点,对Java中的Lock框架的枝干部分进行了详细介绍,最后给出了锁的一些相关概念. 一

Java性能分析之线程栈详解(下)

Java性能分析之线程栈详解(下) 转载自:微信公众号"测试那点事儿" 结合jstack结果对线程状态详解 上篇文章详细介绍了线程栈的作用.状态.任何查看理解,本篇文章结合jstack工具来查看线程状态,并列出重点关注目标.Jstack是常用的排查工具,它能输出在某一个时间,Java进程中所有线程的状态,很多时候这些状态信息能给我们的排查工作带来有用的线索. Jstack的输出中,Java线程状态主要是以下几种: 1.BLOCKED 线程在等待monitor锁(synchronized

【转帖】windows命令行中java和javac、javap使用详解(java编译命令)

windows命令行中java和javac.javap使用详解(java编译命令) 更新时间:2014年03月23日 11:53:15   作者:    我要评论 http://www.jb51.net/article/48380.htm 学习一下java 最近重新复习了一下java基础,这里便讲讲对于一个类文件如何编译.运行.反编译的.也让自己加深一下印象 如题,首先我们在桌面,开始->运行->键入cmd 回车,进入windows命令行.进入如图所示的画面: 可知,当前默认目录为C盘User