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());
}
轉載于:https://www.cnblogs.com/yj20hl/p/6196127.html
總結
- 上一篇: 使用 gpg 加密文件 - 通过 she
- 下一篇: 使用循环计算斐波那契数列