首页 > 代码库 > 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输入输出流