I / O
流(stream)是供数据传输的通道
- 字节流(通用的)
inputStream(父类)
FileInputStream
outputStream(父类)
FileOutputStream
操作流的步骤
a) 产生字节流对象
b) 调用读写方法
c) 关闭流
2. public void copyImage(){
- 3. FileInputStream fis=null;
- 4. FileOutputStream fos=null;
- 5. int i=0;
- 6. try {
- 7. //创建流对象
- 8. fis=new FileInputStream("E:/PIC/11080901168c233be5b9173bc7.jpg");
- 9. fos=new FileOutputStream("E:/LM.jpg");
- //读取并写入
- byte[] bt=new byte[1024];
- while((i=fis.read(bt))!=-1){
- fos.write(bt,0,i);
- }
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- try {
- fis.close();
- fos.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- TestIO tio=new TestIO();
- tio.copyImage();
36. }
- 字符流
a) 父类
i. Reader
- 子类 filereader
ii. Writer
- 子类 filewriter
b) ReadLine 读取一行是bufferedreader中的方法
c) 流链接
- public void buffRead(){
- FileReader fr=null;
- FileWriter fw=null;
- BufferedReader br=null;
- try {
- //创建流
- fr=newFileReader("E:/PIC/1.txt");
- fw=new FileWriter("E:/新建文本文档 .doc");
- br=new BufferedReader(fr);
- String str=null;
- //读取
- while((str=br.readLine())!=null){
- fw.write(str+"\n");
- // System.out.println(str);
- }
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- try {
- fr.close();
- fw.close();
- br.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- TestIO tio=new TestIO();
- // tio.copyImage();
- tio.buffRead();
74. }
//字节转换字符
public void inputStreamRead(){
FileInputStream fis=null;//字节
BufferedReader br=null;//字符
try {
fis=new FileInputStream("E:/PIC/1.txt");
br=new BufferedReader(new InputStreamReader(fis));//InputStreamReader将字节流转换成字符流
String str=null;
while((str=br.readLine())!=null){
System.out.println(str);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestIO tio=new TestIO();
// tio.copyImage();
// tio.buffRead();
tio.inputStreamRead();
}
- 对象流
对象流的子类1. ObjectOutputStream 2. ObjectInputStream
把内存(堆)中的对象转换成二进制数据输出,叫对象的序列化
把二进制数据还原成内存当中的对象,叫对象的反序列化(产生对象的第二种方法,第一种使用关键字 new)
Serializable是标识性接口 (允许可序列化的标识)
让一个类可序列化必须时间标识接口
当一个类的属性值不想被序列化时可以属性前面加上transient 关键字
public void testSeriallzable(){
ObjectOutputStream oos=null;
FileOutputStream fos=null;
TestBean tb=new TestBean();
tb.setAge(19);
tb.setName("张三");
try {
fos=new FileOutputStream("date.sql");
oos=new ObjectOutputStream(fos);
oos.writeObject(tb);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestIO tio = new TestIO();
// tio.copyImage();
// tio.buffRead();
// tio.inputStreamRead();
// tio.filedelete("E:/testfile");
tio.testSeriallzable();
}
File 类(文件和目录路径名的抽象表示)
//递归
public void filedelete(String path) {
File file = new File(path);
File[] fileSize = file.listFiles();
for (int i = 0; i < fileSize.length; i++) {
if (fileSize[i].isFile()) {
fileSize[i].delete();
} else {
filedelete(fileSize[i].getAbsolutePath());
}
}
file.delete();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestIO tio = new TestIO();
// tio.copyImage();
// tio.buffRead();
// tio.inputStreamRead();
tio.filedelete("E:/testfile");
}