-----------------------------------------------------
unicode: 統一編碼 一個字母和一個漢字都是佔2個字節java
GBK:中國的漢字編碼,GB2312 ,GBK的範圍比GBK2312更廣
一個字母佔1個字節 一個漢字佔2個字節面試
UTF-8: 一個字母佔1一個字節 一個漢字佔 3個字節
----------------------------------------------------數組
io 體系
一、io -- > input:讀取 output:寫入
二、io 做用 -- 讀取數據和寫入數據安全
io 體系的類都包含在 java.io 包
三、io分類
1 按數據方向來分類 讀取流(Input,reader)和寫入流(Outerput,writer)
2 按數據的類型分類 字節流(以Stream結尾)和字符流(以reader,writer結尾)
字符流是在字節流的基礎上家裏編碼機制編碼
字節流 InputStream OutputStream線程
public class InputStream1 {
public static void main(String[] args) throws Exception {
InputStream input = new FileInputStream("d:\\aa.txt");//指定路徑
byte[] b = new byte[4];code
//int length = 0;
while((length = input.read(b)) != -1){//第一次存4個
//第二次從新賦值(覆蓋)
System.out.println(new String(b,0,b.length));
}對象
}unicode
}get
------------------
public class OutPutStream1 {
public static void main(String[] args) throws Exception{
OutputStream output = new FileOutputStream("D:\\1510.txt");
Scanner sc = new Scanner(System.in);
while(true){
String str = sc.next();
if("886".equals(str)){break;}
output.write(str.getBytes());
output.write("\r\n".getBytes());//回車換行
}
}
}
----------------
字符流 BufferedReader BufferedWriter
public class BufferRead {
public static void main(String[] args) throws Exception {
Reader reader = new FileReader("d:\\copy.txt");
BufferedReader bf = new BufferedReader(reader);
String str;
//readLine() 讀取整行內容
while((str = bf.readLine()) != null){
System.out.println(str);
}
}
}
-----------------
//接收鍵盤錄入的多行數據,將它寫到文件中。BufferedWriter,須要條件。
public class BufferedWriterDemo1 {
public static void main(String[] args) throws Exception {
BufferedWriter bw = new BufferedWriter(new FileWriter("f:\\aaa.txt"));
Scanner input = new Scanner(System.in);
String str = null;
while(true){
str = input.nextLine();
if("886".equals(str)){
break;
}
//寫數據
bw.write(str);
//寫入換行符。
bw.newLine();//根據平臺的不一樣,寫入的換行符也會不同。
bw.flush();
}
bw.close();
}
}
---------------
緩衝流 BufferedInputStream BufferedOuterputStream
//效率上。用法跟InputStream是同樣的。內部有一個內置的緩衝區。
public class BufferedOutputStream1 {
public static void main(String[] args)throws Exception {
BufferedOutputStream bs = new BufferedOutputStream(new FileOutputStream
("d:\\d.txt"));
byte[] b = new byte[1024];
Scanner sc = new Scanner(System.in);
while(true){
String str = sc.next();
if("1".equals(str)){break;}
b = str.getBytes();
bs.write(b);
bs.flush();
}
bs.close();
}
}
-------------
單例模式
/*單例模式
* 1:構造方法私有化。
*/
public class SingInstance {
private SingInstance(){
}
private static SingInstance single;//懶漢式。在聲明的時候沒有給它建立對象。
public static SingInstance getInstance(){//線程不安全。講線程的時候再解決問題。
if(single==null){
single = new SingInstance();
}
return single;
}
}
------------
/*單例模式
* 1:構造方法私有化。
* 2:聲明一個靜態的成員變量。
* 3:提供一個公共的方法,返回該類的實例。
* 餓漢式跟懶漢式的區別
* 1:項目中用餓漢式。而面試常常問懶漢式。
* 2:懶漢式代碼是有缺陷的,會出現問題。
*/
public class SingInstance2 {
private SingInstance2() {
}
private static SingInstance2 single = new SingInstance2();// 餓漢式。
public static SingInstance2 getInstance() {
return single;
}
}
---------------------------------------------------------------------------------------------------------------------
public class CopyMethod {
// private String rpath; //讀取路徑
// private String wpath; //寫入的路徑
//字節流
public void method(String rp,String wp) throws IOException{
OutputStream os = new FileOutputStream(wp);
InputStream is = new FileInputStream(rp);
int l = is.available();
//讀取文件到數組B裏
byte[] b = new byte[l];
int length = 0;
while((length = is.read(b,0,l)) != -1){
//把數組B中的數據寫入文件
os.write(b);
}
os.close();
is.close();
}
//字符流
public void method2(String rp,String wp) throws IOException{
Reader r = new FileReader(rp);
Writer w = new FileWriter(wp);
BufferedReader br = new BufferedReader(r);
BufferedWriter bw = new BufferedWriter(w);
String str; //讀取數據 while((str = br.readLine()) != null){ //寫入數據 bw.write(str); bw.flush(); } bw.close(); br.close(); } //緩衝流 public void method3(String rp,String wp) throws IOException{ OutputStream os = new FileOutputStream(wp); InputStream is = new FileInputStream(rp); BufferedOutputStream bos = new BufferedOutputStream(os); BufferedInputStream bis = new BufferedInputStream(is); int l = bis.available(); byte[] b = new byte[l]; int length = 0; //讀取 while((length = bis.read(b,0,l)) != -1){ //寫入 bos.write(b,0,length); bos.flush(); } bos.close(); bis.close(); } public static void main(String[] args) throws IOException { CopyMethod copy = new CopyMethod(); copy.method("D:\\mp3\\許嵩 - 認錯.mp3","D:\\ - 認錯.mp3"); //copy.method2("D:\\mp3\\許嵩 - 認錯.mp3","D:\\許 - 認錯.mp3"); //copy.method3("D:\\mp3\\許嵩 - 千百度.mp3","D:\\許- 千度.mp3"); } }