Java基礎--IO流

1,輸入輸出流基類:

字節流:InputStream OutputStream
字符流:Reader Writer

建一個文件寫入流。
FileWriter fw = new FileWriter("Demo.txt");
fw.write("hahaha");//寫入到流中。
fw.flush();//將流中的數據刷入到文件中。
//fw.close();//也可以刷新,但是會把流關閉。
Reader也有close方法,但是它不刷新。

IOException
跟文件發生關係的無論讀寫都會發生IOExcetion。


BufferedWriter,使用緩衝區之前,必須先有流對象。

BufferedReader,提供了一個特有的讀一行方法,readLine();  遇到null返回值結束。


自己實現一個readLine方法。
public String myReadline()
{
 StringBuilder sb = new StringBuilder();
 int ch = 0;
 while ((ch=r.read())!=-1)
 {
  if (ch == '\r')
  {
   continue;
  }
  if (ch =='\n')
  {
   return sb.toString();
  }
  else
   sb.append((char)ch);
 }
if(sb.length()!=0)//這個地方有的一思考
    return sb.toString();
 return null;
}
LineNumberReader是BufferedReader的子類。帶有行號的調用設置功能。

讀取轉換流:
InputStreamReader(InputStream is);
轉換流的應用主要是指定的字符集就是按指定的編碼存取。


File對象功能:
創建:
boolean creatNewFile();如果該文件已經創建,則返回false。
刪除:
delete();
deleteOnExit();虛擬機終止時推出。
判斷:
canExecute();判斷是否可執行。    
exists(); 判斷文件是否存在。
mkdir();創建一級目錄。
mkdirs();創建多級文件夾。
isFile();
isDirectory();這些判斷必須先判斷該文件對象封裝的內容是否存在。調用exits();
isHidden();判斷是否是隱藏文件。
isAbsolute();判斷是否絕對路徑。
獲取:
getName();
getPath();
getParent();返回的是絕對路徑中的父目錄,如果是相對路徑返回null
getAbsolutePath();
lastModified();
length();
renameTo();重命名文件,可以改路徑。

listRoost();盤符列表。
list();文件下所以文件及目錄名。
listFile();返回抽象路徑名數組
 String[] arr = dir.list(new FilenameFilter()
  {
   public boolean accept(File dir, String name)
   {
    return name.endsWith(".java");
   }
  });
匿名內部類構造的方法返回需要的文件名列表。

Properties;集合中和IO技術相結合的容器。具備map特點,裏面存儲的鍵值對都是字符串。

setProperties();
stringPropertyNames(); 返回Set集合。
load(InputStream)從輸入流中讀取鍵值對
load(Reader)JKD1.6開始可用。

2,其他流:

打印流,將各種數據類型原樣打印。
PrintStream()可用直接處理文件。
構造函數接受的有:file對象,字符串路徑,字節輸出流。
PrintWriter。多了一個字符輸出流

合併流:SequenceInputStream
操作對象:ObjectInputStream,ObjectOutputStream
wirte();寫入字節
writeInt();寫入32位

標記接口:只要繼承接口就可以。
ObjectInputStream();
ObjectOutputStream();

UID標識號是給類定義一個標示,方便序列化。靜態不能被序列化。
transient關鍵字修飾的成員也不能序列化。

管道流:PipedInputStream PipedOutputStream需要多線程。
隨機讀取流:它不算IO體系子類,但它是IO包中的成員,具備讀寫,內部封裝一個數組。getFilePointer獲取指針位置,seek改變指針位置。內部封裝了字節輸入輸出流。    
RandeomAccessFile();

DataInputStream,DateOutputStream
可以用於操作基本數據類型的數據的流對象。    
ByteArrayInputStream,操作字節數組
構造時需接收數據源(字節數組)
ByteArrayOutputStream,構造時內部封裝了可變長度的數組。兩個流不需要關閉。沒有使用系統資源。

CharArrayReader,CharArrayWriter操作字符數組
StringReader,StringWriter操作字符串


源設備:
鍵盤:System.in,硬盤 FileStream,內存 ArrayStream
目的設備:
控制檯:System.out,硬盤FileStream, 內存ArrayStream
用流的思想操作數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章