目錄
一、io流
1.什么是io流
2.流的方向
i.輸入流
ii.輸出流
3.操作文件的類型
i.字節流
?1.拷貝
ii.字符流
?3.字符流輸出流出數據
4.字節流和字符流的使用場景
5.練習
6.緩沖流
1.字節緩沖流拷貝文件
2.字符緩沖流特有的方法
1.方法
2.總結
7.轉換流基本用法
8.小練習;
?編輯二、多線程
1.實現方式
i.繼承Thread類的方法進行實現
ii.實現Runnable接口的方式進行實現
iii.利用Callable接口和Future接口方式實現
vi.三種方式對比
v.常見的成員方法
2.守護線程等
i.守護線程
?ii.禮讓線程
iii.插入線程
vi.線程的生命周期?編輯
v.線程的安全
iv.同步方法
三、線程的鎖
一、io流
1.什么是io流
io流:存儲和讀取數據的解決方案
2.流的方向
i.輸入流
ii.輸出流
字節輸出流基本方法
FileOutputStream fos=new FileOutputStream("a.txt");fos.write(97);fos.close();
3.操作文件的類型
i.字節流
?1.拷貝
ii.字符流
空參read
帶參read
3.字符流輸出流出數據



4.字節流和字符流的使用場景
5.練習
一:
public class Main {public static void main(String[] args) throws IOException {//拷貝一個文件夾,考慮子文件夾//1.創建對象表示數據源File src=new File("D:\\aaa\\src");//2.創建對象表示目的地File dest=new File("D:\\aaa\\dest");//3.調用方法開始拷貝copydir(src,dest);}
/*
作用:拷貝文件
參數一:數據源
參數二:目的地*/private static void copydir(File src, File dest) throws IOException {dest.mkdirs();//如果不存在則創建,如果存在則創建失敗//遞歸//1.進入數據源File[] files = src.listFiles();//會把所有的文件還// 有文件夾的路徑放到數組當中給你返回好//2.遍歷數組for (File file : files) {if (file.isFile()){//3.判斷文件,拷貝FileInputStream fis=new FileInputStream(file);FileOutputStream fos=new FileOutputStream(new File(dest,file.getName()));byte[] bytes=new byte[1024];int len;while((len=fis.read(bytes))!=-1){fos.write(bytes,0,len);}fos.close();fis.close();}else{//判斷文件夾,遞歸copydir(file,new File(dest,file.getName()));}}}
}
二:
^異或:兩邊相同true兩邊不同false,兩次同一個是原來的數據
加密:如以下代碼
解密:再創一個c,將a改成b,b改成c就行了
FileInputStream fis=new FileInputStream("D:\\java\\io流\\myio\\a.txt");FileOutputStream fos=new FileOutputStream("D:\\java\\io流\\myio\\b.txt");//加密處理int b;while((b=fis.read())!=-1){fos.write(b^2);}fos.close();fis.close();
三:
注意:初始文件里面不要換行否則會隱含\r\n
代碼:
//讀取數據FileReader fr=new FileReader("D:\\java\\io流\\myio\\a.txt");StringBuilder sb=new StringBuilder();int ch;while((ch= fr.read())!=-1){sb.append((char)ch);}fr.close();System.out.println(sb);//排序Integer[] arr = Arrays.stream(sb.toString().split("-")).map(Integer::parseInt)//方法引用.sorted().toArray(Integer[]::new);//再收集到Integer的數組里面//寫出數據FileWriter fw=new FileWriter("D:\\java\\io流\\myio\\a.txt",true);String s = Arrays.toString(arr).replace(", ","-") ;String result= s.substring(1,s.length()-1);fw.write("\r\n");fw.write(result);fw.close();
6.緩沖流
1.字節緩沖流拷貝文件
更加高級的知識點


2.字符緩沖流特有的方法
1.方法


2.總結
7.轉換流基本用法
8.小練習;
二、多線程
1.實現方式
i.繼承Thread類的方法進行實現
打印出來的數據是一會1一會2的
ii.實現Runnable接口的方式進行實現
iii.利用Callable接口和Future接口方式實現
vi.三種方式對比
v.常見的成員方法
2.守護線程等
i.守護線程
ii.禮讓線程
讓其盡可能均勻
iii.插入線程
vi.線程的生命周期
v.線程的安全
eg:買票:如下代碼,結果就是很多票數重復了
小細節:
也可以這樣寫
注意:不同的線程互斥地訪問臨界資源,這是互斥。所有的線程都必須等待其他線程賣了票之后才能賣票,這是同步
//重寫方法快捷鍵:Alt+回車
iv.同步方法
ctrl+alt+m快捷創建函數鍵