1、java.io包下的
File类:java程序中的此类的一个对象,就对应着硬盘中的一个文件或网络中的一个资源
File file1=new File(“路径1”);//路径一定要是双斜线
File file2=new File(“路径2”);
>1、File既可以表示一个文件(.doc .xls .mp3 .avi .jpg 等等),也可以表示一个文件目录
>2、File类的对象是与平台无关的。
>3、File类针对于文件或文件目录,只能进行新建、删除、重命名、删除目录等等的操作。如果涉及到访问文件的内容,File是无能为力的,只能使用IO流下提供的输入输出流来实现。
>4、常把File类的对象作为形参传递给相应的输入输出流的构造器中。
2、IO流的结构:
3、IO流的划分:
(1)、按照流的流向的不同:输入流、输出流;(站在程序的角度看输入(文件往程序内输入)、输出(从程序中输出到文件))。
(2)、按照流中的数据单位的不同:字节流、字符流(纯文本文件使用字符流,除此之外使用字节流)。
(3)、按照流的角色不同:节点流、处理流 (流直接作用于文件上是节点流(4个),除此之外都是处理流)。
4、重点掌握:
注:1、从硬盘中读入一个文件,要求此文件一定要存在;若不存在,报FileNotFoundException的异常。
2、从此程序中输出一个文件到硬盘,此文件可以不存在。若不存在,就新创建一个文件实现输出;若已经存在作为将会被覆盖。
3、真正开发时,就使用缓冲流来代替节点流。
4、主要最后要关闭相应的流。先关闭输出流,再关闭输入流。将此操作放入finally。
5、其他的流:
1、转换流:实现字节流到字符流的转换
InputStreamReader:输入时,实现字节流到字符流的转换,提高操作的效率(前提是,数据是文本文件) =====》解码:字符数组 à 字符串
OutputStreamWriter:输出时,实现字符流到字节流的转换。=====》编码:字符串 à 字符数组
例题:
2、标准的输入、输出流:
System.in:标准的输入流---标准是指从键盘输入数据。
System.out:标准的输出流---标准是指从显示器中输出数据。
输出数据。
3、打印流(都是输出流)PrintStream(处理字节)、PrintWriter(处理字符)
可以使用System.setOut(PrintStream p)重新设置一下输出的位置。
PrintStream p=new PrintStream(new FileOutputStream(hello.txt),true);
4、数据流(处理基本数据类型、String类、字节数组)
DataInputStream DataOutputStream --往外输出用writer什么(writerBoolean、writerInt、writerString就是等同于writerUTF);--读就把相应的writer改为read就可以了(readBoolean、readUTF……)。
5、对象流(用来处理对象的)
>对象的序列化机制:将内存中的java对象以二进制流的形式进行传输,写入到硬盘或进行网络的传输。
ObjectInputStream(Object readObject)
ObjectOutputStream(void writeObject(Object obj))
如何创建流的对象:ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new File(“person.txt”)));
ObjectIntputStream ois=new ObjectInputStream(new FileInputStream(new File(“person.txt”)));
实现序列化机制的对象对应的类的要求:(1)、要求类要实现Serializable接口; (2)、同样要求类的所有属性也必须实现Serializable接口;(3)、要求给类提供一个序列版本号:private static final long serialVisionUID;(4)、属性声明为static或transient的,不可以实现序列化。
6、随机存取文件流:RandomAccessFile
6.1既可以充当一个输入流,又可以充当一个输出流:public RandomAccessFile(File file,String mode)
6.2支持从文件的开头duqu、写入。若输出的文件不存在,直接创建。若存在,则是对原有文件内容的覆盖。
6.3支持任意位置的”插入”。
二、多线程:
1、理解程序、进程、线程的概念
2、如何创建java程序的线程(重点)
3、线程的生命周期
4、线程的同步机制(重点、难点)
5、线程的通信