Serialization數組
FileOutputStream 把字節寫入文件
ObjectOutputStream 把對象轉換成能夠寫入串流的數據xml
序列化對象寫入文件
(1)
FileOutputStream fileStream = new FileOutputStream("MyGame.ser");//若文件不存在,則會自動建立
(2)
ObjectOutputStream os = new ObjectOutputStream(fileStream);
(3)寫入對象
os.writeObject(characterOne);
os.writeObject(characterTwo);//character* 必需要實現序列化
os.writeObject(characterThree);//writeObject()方法,會將對象打成串流送到FileOutputStream來寫入文件對象
(4)關閉ObjectOutputStream
os.close();接口
讓類實現實例化,就讓該類實現Serializable接口。
當對象被序列化是,該對象引用的實例變量也會被序列化。three
transient 標記某實例變量時,表示該變量不能或不該該被序列化,序列化程序會跳過該變量ci
Deserialization
(1)
FileInputStream fileStream = new FileInputStream("MyGame.ser");//若文件不存在,則會拋出異常
(2)
ObjectInputStream os = new ObjectInputStream(fileStream)
(3)讀取對象
Object one = os.readObject();
Object two = os.readObject();
Object three = os.readObject();//每次調用readObject()都會動stream中讀出下一個對象,讀取書序與寫入順序相同,次數超過會拋出異常
(4)轉換對象類型
GameCharacter elf = (GameCharacter) one;
GameCharacter troll = (GameCharacter) two;
GameCharacter magician = (GameCharacter) three;
(5)關閉ObjectInputStream
os.close();//FileInputStream會自動跟着關閉字符串
把字符串寫入文本文件
FileWriter writer = new FileWriter("Foo.txt");
writer.write("hello foo!");
writer.close();get
File對象 表明磁盤上的文件或目錄的路徑名稱it
用途:
(1)建立出表明現存盤文件的File對象io
File f = new File("MyCode.txt");
(2)創建新的目錄
File dir = new File("Chapter7");
dir.mkdir();
(3)列出目錄下得內容
if(dir.isDirectory()){
String[] dirContents = dir.list();
for(int i = 0;i < dirContents.lengh; i++){
System.out.println(dirContents[i]);
}
}
(4)取得文件或目錄的絕對路徑
System.out.println(dir.getAbsolutePath());
(5)刪除文件或目錄
boolean isDeleted = f.delete();
BufferedWriter writer = new BufferedWriter(new FileWriter(aFile));
writer.flush();//強制緩衝區當即寫入
讀取文本文件
try{
File f = new File("MyText.txt");
FileReader fileReader = new FileReader(f);
BufferedReader reader = new BufferedReader(fileReader);//只有在緩衝區讀空的時候纔回去磁盤讀取,以獲取更高的效率
String line = null;
while( (line = reader.readLine()) != null ){
System.Out.println(line);
}
reader.close();
}catch(Excepton e){
e.printStackTrace();
}
寫入文本文件
try{
File file = new File("XXX.xml");
Reader reader = ...;
Writer writer = new BufferedWriter(new FileWriter(file));
char[] buff = new char[1024];
for(int i=0;(i=reader.read(buff))>0;){
writer.write(buff,0,i);
}
writer.close();
reader.close();
}catch(Exception e){
e.printStackTrace();
}
解析字串String s = "a/b/c"String[] argS = s.split("/");//split()方法會用參數所指定的字符拆開字符串,並存入數組