企业网站相关案例营销技巧和营销方法心得
File类型
简介
在程序中,使用java.io.File这个类来描述和操作磁盘上的一个文件或文件夹(目录)。
File这个类,能新建、删除、移动,重命名文件或文件夹,也能获取或者修改文件或文件夹的信息(如大小,修改时间等),但File不能访问文件里的内容。如果需要访问文件里的内容,则需要使用输入/输出流
路径
绝对路径
从磁盘的根目录开始,一层层的向内查找,直到找到这个文件。在不同的操作系统中,根目录的表示方式可能略有不同。
相对路径
是相对于当前工作目录或另一个已知位置的路径。它描述的是文件或目录与当前位置之间的相对关系。相对路径通常省略了根目录部分,直接从当前目录开始描述路径。
./ : 表示当前工作目录。 ./可以省略
../ : 表示返回到上一层目录
常用构造器
File(String pathname):通过将指定字符串转换成抽象路径名来创建一个File实例
File(File parent,String child): 从父抽象路径名和子路径名字符串创建新的 File实例。
File(String parent, String child) : 从父路径名字符串和子路径名字符串创建新的 File实例。
文件属性的方法
1.String getName()
返回由此抽象路径名表示的文件或目录的名称
2.String getPath()
将此抽象路径名转换为路径名字符串
3.File getAbsoluteFile()
返回此抽象路径名的绝对形式。
4. String getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。
5.String getParent()
返回此抽象路径名的父路径名字符串,如果此路径名未指定父目录,则返回null。
6.boolean renameTo(File newName)
重命名由此抽象路径名表示的文件。
7.boolean exists()
测试此抽象路径名表示的文件或目录是否存在
8.boolean canWrite()
测试应用程序是否可以修改由此抽象路径名表示的文件
9.boolean canRead()
测试应用程序是否可以读取由此抽象路径名表示的文件
10.boolean isFile()
测试此抽象路径名表示的文件是否为普通文件
文件的查询
1.String[] list()
返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录
2.String[] list(FilenameFilter filter)
返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录
3.File[] listFiles()
返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件
文件的创建与删除
1.boolean createNewFile()
当且仅当具有该名称的文件尚不存在时,创建一个由该抽象路径名命名的新的空文件
2.boolean mkdir()
创建由此抽象路径名命名的目录
3.boolean mkdirs()
创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
4.boolean delete()
删除由此抽象路径名表示的文件或目录。注意,删除目录时,必须保证此目录下是空目录,如果目录不是空的,需要先删除里面的东西,再删除目录。
IO流
概念
IO流: Input Output Stream。
Input(输入):是指数据流入程序,通常我们读取外界数据时使用,所以输入是用来读取数据的。
Output(输出):是指数据从程序流出,通常我们需要写出数据到外界时使用,所以输出是用来写出数据的
分类
按照处理数据的单位分类:
字节流 字符流
按照流的功能分类:
节点流:可以从一个特定的IO设备上读/写数据的流。也称之为低级流
处理流:是对一个已经存在的流的连接和封装,通过所封装的流的功能调用实现数据读/写操作。通常处理流的构造器上都会带有一个其他流的参数。也称之为高级流或者过滤流
应用场景
传统的文件File类,只能够对文件进行属性的操作,例如:创建、移动、删除、属性获取等操作。但是不能获取到文件中的内容
如果需要对文件中的内容进行读写操作,需要使用到IO流。
使用场景:对磁盘或者网络中的文件进行读写操作。
字节流
简介
InputStream是字节输入流的顶级父类,是抽象类。定义了基本的读取方法。
OutputStream是字节输出流的顶级父类,也是抽象类,定义了基本的写出方法
常用字节流
文件流
FileOutputStream:是文件的字节输出流,以字节为单位写出数据到文件
FileInputStream:是文件的字节输入流,该流以字节为单位从文件中读取数据。
缓冲流
BufferedOutputStream
- 该缓冲输出流内部维护着一个缓冲区,每当我们向该流写数据时,都会先将数据存储缓冲区,当缓冲区已满时,缓冲流会将数据一次性全部写出。
- 使用该流虽然可以提高写出效率,但是缺乏即时性,此时我们可以使用flush方法,清空缓冲区,强制写出。
BufferedInputStream
- 读取数据时因为以字节为单位,往往会因为读取次数过于频繁而大大降低读取效率,因此我们可以通过提高一次读取的字节数量来减少读取次数,从而提高读取的效率
- 该缓冲输入流,内部维护着一个缓冲区。使用该流读取数据时,该流会尽可能多的一次性读取数据存入缓冲区,直到该缓冲区中的数据被全部读取完毕,会再次读取数据存入该缓冲区,反复进行。这样就减少了读取次数,从而提高效率。
数据流
DataOutputStream
- 该流是FilterOutputStream的子类,扩展了一些功能,提供了一些可以直接写出基本数据类型的方法
- 构造方法
- DataOutputStream(OutputStream os)DataInputStream
- 该流提供了一些可以直接读取基本数据类型的方法
- 构造方法
- DataInputStream(InputStream is)
对象流
对象是存在于内存中的,有的时候我们需要将对象保存到硬盘上,又有时我们需要将对象传输到另一台计算机上等等这些的操作。
此时,我们需要将对象转换成一个字节序列,这个过程我们称之为序列化。
相反,我们将一个字节序列转换成对应的对象,这个过程我们称之为反序列化
通过ObjectOutputStream流的方法WriteObject(Object o)实现对象序列化,通过ObjectInputStream流的方法readObject()实现对象反序列化。
字符流
简介
Reader是字符输入流的父类,抽象类;Writer是字符输出流的父类,抽象类。字符流是以字符(char)为单位读写数据的,一次处理一个unicode。字符流的底层仍然是基本的字节流
转换流
OutputStreamWriter
使用该流可以设置字符集,并按照指定的字符集将字符转换成字节后通过该流写出
InputStreamReader
使用该流可以设置字符集,并按照指定的字符集从流中按照该编码将字节数据转换为字符并读取
缓冲字符流
PrintWriter
PrintWriter是具有自动行刷新的缓冲字符输出流,其提供了比较丰富的构造方法,通常比BufferedWriter更实用。
BufferedReader
BufferedReader是缓冲字符输入流,内部提供了缓冲区,可以提高读取效率。
文件字符流
FileWriter
相当于OutputStreamWriter和FileOutputStream合起来的功能
FileReader
相当于InputStreamReader和FileInputStream合起来的功能,但是不能设置字符集