**************************************************************************************************************************************************************
日期:2015年1月 27日
主题:IO
相关文件夹:oracle/相关课件/第10章_IO.pptx
使用软件:Eclipse
**************************************************************************************************************************************************************
上午
**************************************************************************************************************************************************************
一、File类
1. 相关API:
访问文件名:
Ø getName()
Ø getPath()
Ø getAbsoluteFile()
Ø getAbsolutePath()
Ø getParent()
Ø renameTo(FilenewName)
文件检测
Ø exists()
Ø canWrite()
Ø canRead()
Ø isFile()
Ø isDirectory()
获取常规文件信息
Ø lastModified()
Ø length()
文件操作相关
Ø createNewFile()
Ø delete()
目录操作相关
Ø mkDir()
Ø mkDirs()
Ø list()
Ø listFiles()
二、Java IO原理
1. 进入内存的叫输入流
出内存的叫输出流
(抽象基类) | 字节流 | 字符流 |
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
2. IO流体系
按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)
按数据流的流向不同分为:输入流,输出流
按流的角色的不同分为:节点流,处理流
3. 像文件这种需要关闭流的类,抛出的异常需要在本地解决,即在finally中写close(),否则流将无法关闭。Finallly中的close()也同样需要抛出异常。
4. IO原理及流的分类
文件流
FileInputStream / FileOutputStream / FileReader / FileWriter
缓冲流
BufferedInputStream / BufferedOutputStream /
BufferedReader / BufferedWriter
转换流
InputStreamReader / OutputStreamWriter
标准输入/输出流
打印流(了解)
PrintStream / PrintWriter
数据流(了解)
DataInputStream / DataOutputStream
对象流 ----涉及序列化、反序列化
ObjectInputStream / ObjectOutputStream
随机存取文件流
RandomAccessFile
5. java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
三、InputStream & Reader OutputStream & Writer
InputStream 和 Reader 是所有输入流的基类。OutputStream 和Writer 也非常相似。
四、缓冲流
为了提高数据读写的速度,JavaAPI提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组
根据数据操作单位可以把缓冲流分为:
BufferedInputStream和BufferedOutputStream
BufferedReader和BufferedWriter
l 缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法
l 对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush()将会使内存中的数据立刻写出
五、转换流
转换流提供了在字节流和字符流之间的转换
Java API提供了两个转换流:
InputStreamReader和OutputStreamWriter
字节流中的数据都是字符时,转成字符流操作更高效**************************************************************************************************************************************************************
下午
**************************************************************************************************************************************************************
一、标准输入输出流
l System.in和System.out分别代表了系统标准的输入和输出设备
l 默认输入设备是键盘,输出设备是显示器
l System.in的类型是InputStream
l System.out的类型是PrintStream,其是OutputStream的子类FilterOutputStream 的子类
l 通过System类的setIn,setOut方法对默认设备进行改变。
Ø public static void setIn(InputStreamin)
Ø public static void setOut(PrintStreamout)
例:
/**
* PrintStream
* @throws IOException
*/
@Test
public void test3() throws IOException{
InputStreamReaderisr= newInputStreamReader(System.in);
BufferedReaderbr =new BufferedReader(isr);
Stringstr="";
while((str=br.readLine())!=null){
if(str.equalsIgnoreCase("e")){
break;
}
System.out.println(str);
}
}
二、打印流
l 在整个IO包中,打印流是输出信息最方便的类。
l PrintStream(字节打印流)和PrintWriter(字符打印流)
Ø 提供了一系列重载的print和println方法,用于多种数据类型的输出
Ø PrintStream和PrintWriter的输出不会抛出异常
Ø PrintStream和PrintWriter有自动flush功能
Ø System.out返回的是PrintStream的实例
例:/**
* PrintStream
*/
@Test
public void test4() {
PrintStreamps = null;
try {
ps = new PrintStream(new File("hello.txt"));
ps.append("sadfasg");
ps.append("sadfasg");
ps.append("sadfasg");
ps.print("asdfg");
}catch(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
ps.close();
}
}