實驗1Python開發環境使用和程式設計初體驗
阿新 • • 發佈:2022-03-25
20200329
RandomAccessFile
java中唯一一個用於雙向操作的類:
- RandomAccessFile(File,String->r/rw)
- int read()/
檔案指標:
通過指標就可以在檔案的任意位置讀或者寫:
- getfilePointer()獲取檔案指標所在的位置
- seek(long)將檔案指標設定到指定位置
- skipBytes(long)將檔案向後移動多少位元組
FileOutputStream
- FileOutputStream(String)給定具體操作的檔案地址
- FileOutputStream(File)給定具體操作的檔案
- FileOutputStream(String,boolean)boolean表示是否追加true表示追加
- FileOutputStream(File,boolean)
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class Am01 { public static void main(String[] args) { File file=new File("file/fos.txt"); if (!file.exists()){ try{ file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } try( FileOutputStream fos=new FileOutputStream(file,true); ) { fos.write('A'); fos.write("fjhfdbsjfbj".getBytes()); fos.write("snfjsdjfsfds".getBytes(),6,7); System.out.println("寫出完畢"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
- Write(int)寫該整數第八位
- write(byte[])將整個位元組寫入的檔案中
- write(byte[],off,lenth)將位元組陣列中的內容從指定位置開始寫,寫length個
if(!file.exists()){ System.out.println("檔案不存在"); return; } try( FileInputStream fis=new FileInputStream(file); ) { int i=fis.read(); //讀取一個位元組 System.out.println((char)i); byte[]bs=new byte[1024]; /* int k=fis.read(bs); System.out.println(new String(bs,0,k)); //嘗試讀取bs長度的資料,返回值表示實際讀取到的位元組量*/ int j=fis.read(bs,5,10); //嘗試讀取length個位元組,返回值表示實際讀取到的位元組量 System.out.println(new String(bs,5,j)); } catch (Exception e) { e.printStackTrace(); }
FileInputStream
- FileInputStream
BufferedOutputStream/BufferedInputStream
- 帶有緩衝區的流
- 程式中維護一個緩衝區
- 降低了寫檔案操作的頻率
- 提高了寫操作的效率
- BufferedOutputStream
- BufferedOutputStream(outputStream) 先寫入緩衝區,當緩衝區慢之後在通過包裝的底層流將內容寫出的檔案
- write(int)
- write(byte[])
- write(byte[],off,length)
- flush()手動清理緩衝區,再呼叫close()方法時會先呼叫flush()方法再關閉流
import java.io.*;
public class Am02 {
public static void main(String[] args) {
File file=new File("src/Am/fos.txt");
if (!file.exists()){
try{
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try(
FileOutputStream fos=new FileOutputStream(file,true);
BufferedOutputStream bos=new BufferedOutputStream(fos);
) {
bos.write("sjdfskajdfjsgdfjsd".getBytes());
// bos.flush();//將緩衝區中的內容全部寫到檔案,並清空緩衝區
System.out.println("寫出完畢");
// bos.close();//先清空緩衝區,再關閉流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- BufferedInputStream
- BufferedInputStream(InputStream)
- read()
- read(byte[])
- read(byte,off,length)
import java.io.*;
public class Am02 {
public static void main(String[] args) {
File file=new File("src/Am/fos.txt");
if (!file.exists()){
return;
}
try(
FileInputStream fos=new FileInputStream(file);
BufferedInputStream bos=new BufferedInputStream(fos);
) {
byte[]bs=new byte[1024];
int i=bos.read(bs);
System.out.println(new String(bs,0,i));
} catch (IOException e) {
e.printStackTrace();
}
}
}
ObjectInputStream/ObjectOutputStream
- 物件流
- ObjectOutputStream
- 寫物件到檔案中
- 物件所屬類實現Serializable(序列化介面)
- 只要類實現序列化介面--》編譯器就會自動新增一個方法--〉將物件轉為位元組陣列
-
持久化:將資料保留下來,將記憶體中的資料轉移到磁碟中
-
序列化:將物件轉為位元組陣列
-
反序列化:將位元組陣列轉為物件
-
ObjectInputStream
- 將檔案中的物件讀到程式中
- 將位元組陣列轉為物件--》反序列化
- readObject()
-
Reader/writer抽象類,所有字元流的父類--》char為單位
-
InputStream/OutputStream-->抽象類,所有位元組流的父類--〉byte為單位
-
InputStreamReader/OutputStreamWriter轉換流--》java中唯一一組可以將位元組流轉為字元流
-
OutputStreamWriter
- OutputStreamWriter(OutputStream)
- write(int):寫低十六位
- write(char[])
- write(String)
- write(char[],off,length)
- write(String,off,length)
import java.io.*;
public class Pm01 {
public static void main(String[] args) {
File file=new File("fos.txt");
if (!file.exists()){
try{
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try (
FileOutputStream fos=new FileOutputStream(file);
OutputStreamWriter oesw=new OutputStreamWriter(fos,"GBk");
){
oesw.write('中');
oesw.write("kdjhfshjdfkshdfksks".toCharArray(),3,3);
oesw.write("hbdsfjhdfah",3,3);
System.out.println("寫出完畢");
} catch (Exception e) {
e.printStackTrace();
}
}
}
- InputStreamReader