首页 > 代码库 > I/O输入输出流

I/O输入输出流

I/O输入输出:

1、         判断到底是输入还是输出?永远站在程序的立场上。

2、         判断到底是传递字节还是字符? 从而判断管道的粗细。

字节管道是所有数据都可以传,字符管道专门用来传递文本数据。(1个字符等于2个字节)

Java                           InputStream

流             字节流

四                              OutputStream

大                              Reader

父             字符流

类                              Writer

 文件的拷贝,这是可能在面试中出现的手工书写代码!

功能:将D:/test.avi 拷贝到F:/wudi.avi

 

FileInputStream fis = null;

FileOutputStream fos = null;

 

try{

//1.建立管道

fis = new FileInputStream(D:/test.avi);

fos = new FileOutputStream(F:/wudi.avi);

 

//2.操作管道

//int b = 0; //明明是读一个字节,为什么要用一个int来接?

//         如果read()返回的是byte的话,那就会有负数。而"返回-1意//味着结束",这个信息量用byte是无法表达的,所以必须用int。

 

//while((b =fis.read()) != -1){

//  fos.write(b);

//}

byte[] b = new byte[1024];

int length = 0;//记录读取了多少个有效字节数

While((length =fis.read(b)) != -1){

      fos.write(b,0,length);

      fos.flush();//强制刷出缓冲区的内容。

}

 

}catch (FileNotFoundException e){

      e.printStackTrace();

}catch(IOException e){

      e.printStackTrace();

}finally{

//3.关闭管道

      if(fis !=null){

           try{

                 fis.close();

}catch(IOException e){

                 e.printStackTrace();

}

}

if(fos !=null){

           try{

                 fos.close();

}catch(IOException e){

                 e.printStackTrace();

}

}

}

 

对象的序列化与反序列化(分布式应用基础)

序列化:将内存当中的对象以二进制流的形式输出

反序列化:将输入的二进制流转换为内存当中的一个对象。

反序列化(第二种产生对象的方式。)

延伸出,管道的对接。

      操作流不能单独使用,需要插入节点流

 

对象反序列化---将输入的二进制流转换为内存中的对象。

 

 

//File类—来表示操作系统的文件或文件夹对象

File file = new File(“F:/wudi.avi”);//文件路径

File dir = new File(“F:/ppt”);//文件夹路径

//作为文件对象的常用手法:

String path = file.getAbsoutePath();//获取绝对路径

String path2 = file.getPath();//获取相对路径

long space = file.lenth();//获取文件大小

long time = file.lastModifide();//最后修改时间

System.out.pringln(new Date(time));

 

System.out.pringln(file.isHidden()); //是否是隐藏文件

System.out.pringln(file.canWrite());

System.out.pringln(file.isFile()); //是否是文件

System.out.pringln(file.isDirectory());//是否是文件夹

//文件分隔符(File.pathSeparator)



 

String path = “D:” + File.pathSeparator + “fffsa” + File.pathSeparator + “fffsa”;

//作为文件夹对象的常用方法

String[] subFileNames = dir.list();//得到文件夹下面的所有子文件或子文件夹的名字

for(String a : subFileNames){

      System.out.println(a);

}

File[] s = dir.leisFiles();//得到文件夹下面的所有子文件或子文件夹

for(File b : s){

      System.out.println(b.getName());

}

I/O输入输出流