国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

IO流(三)其他流與File類

2019-11-15 01:06:34
字體:
供稿:網(wǎng)友
IO流(三)其他流與File類

1:其他的流

1: DataOutputStream ;多了一些操作基本數(shù)據(jù)類型的功能

DataInputStream:讀取文件。

用DataOutputStream流寫進去的數(shù)據(jù),就用DataInputStream流來讀取。

 1 import java.io.DataInputStream; 2  3 import java.io.DataOutputStream; 4  5 import java.io.FileInputStream; 6  7 import java.io.FileOutputStream; 8  9 import java.io.IOException;10 11  12 13 public class DateIODemo1 {14 15  16 17          public static void main(String[] args) throws IOException {18 19                   20 21                    FileOutputStream fos = new FileOutputStream("e://cc.txt");22 23                    /*24 25                     * 數(shù)據(jù)輸出流是一種處理流,所以應該傳入一個節(jié)點流作為參數(shù)26 27                     * 數(shù)據(jù)輸出流寫到文本上的內(nèi)容是不是按照程序中的原樣寫進文件中的28 29                     */30 31                    DataOutputStream dos = new DataOutputStream(fos);32 33                   34 35                    dos.writeInt(123);//4字節(jié)36 37                    dos.writeBoolean(false);//1字節(jié)38 39                    dos.writeDouble(12.34);//8字節(jié)40 41                   42 43                    //數(shù)據(jù)輸出流是一種處理流,所以應該傳入一個節(jié)點流作為參數(shù)44 45                    FileInputStream fis = new FileInputStream("e://cc.txt");46 47                    DataInputStream dis = new DataInputStream(fis);48 49                   50 51                    //按順序讀取才能讀到正確的數(shù)據(jù)52 53                    System.out.PRintln(dis.readInt());54 55                    System.out.println(dis.readBoolean());56 57                    System.out.println(dis.readDouble());58 59                   60 61                    dis.close();62 63                    dos.close();64 65                   66 67          }68 69 }
View Code

2:關于內(nèi)存的流:不用制定硬盤中的某個文件路徑,因為所有的數(shù)據(jù)都是寫入到內(nèi)存上的,所以這些數(shù)據(jù)不會被永久保存。

      2.1 ByteArrayOutputStream;內(nèi)存寫入流。如果不是字符,則可以調(diào)用toByteArray方法獲得內(nèi)存中的數(shù)據(jù)。

 1 import java.io.ByteArrayOutputStream; 2  3 import java.io.IOException; 4  5   6  7 public class ByteArrayOutputDemo1 { 8  9  10 11          public static void main(String[] args) throws IOException, InterruptedException {12 13                    ByteArrayOutputStream bos = new ByteArrayOutputStream();14 15                    bos.write("我寫的這些東西真的放到了內(nèi)存里面了".getBytes());16 17  18 19                    String str = bos.toString();20 21                    System.out.println(str);22 23                   24 25          }26 27 }28 29  
View Code

2.2 ByteArrayInputStream:內(nèi)存讀取流。

 1 import java.io.ByteArrayInputStream; 2  3 import java.io.IOException; 4  5   6  7 public class ByteArrayInputStreamDemo1 { 8  9          public static void main(String[] args) throws IOException {10 11                    byte[] b = "我真的真的在內(nèi)存里面".getBytes();12 13                    ByteArrayInputStream bis = new ByteArrayInputStream(b);14 15                    byte[] b2 = new byte[1024];16 17                    int len = -1;18 19                    while((len = bis.read(b2)) != -1){20 21                             System.out.println(new String(b2, 0, len));22 23                    }       24 25          }26 27 }
View Code

3:打印流: PrintStream 打印的所有字符都使用平臺的默認字符編碼轉(zhuǎn)換為字節(jié)。在需要寫入字符而不是寫入字節(jié)的情況下,應該使用 PrintWriter 類。

PrintStream

PrintWriter

 1 import java.io.BufferedReader; 2  3 import java.io.InputStream; 4  5 import java.io.InputStreamReader; 6  7 import java.io.PrintStream; 8  9 //接收鍵盤錄入,寫到文件中。10 11 public class PrintStreamDemo2 {12 13          public static void main(String[] args)throws Exception {14 15                    InputStream is = System.in;16 17                    BufferedReader br = new BufferedReader(new InputStreamReader(is));18 19                    //打印流。20 21                    PrintStream ps = new PrintStream("f://aaa.txt");22 23                    String str = null;24 25                    while(true){26 27                             str = br.readLine();28 29                             if("886".equals(str)){30 31                                      break;32 33                             }34 35                             ps.println(str);//將數(shù)據(jù)和換行寫到目的地中。36 37                    }38 39                    br.close();40 41          }42 43  44 45 }
View Code

4:RandomaccessFile:隨機流。這個流并不是像平時說的那樣“隨機”,只是程序員可以使用這個類類讀取文件中指定位置的數(shù)據(jù),或者在文件中指定是位置寫入數(shù)據(jù)。關鍵的方法就是seek();

 1 import java.io.FileNotFoundException; 2  3 import java.io.IOException; 4  5 import java.io.RandomAccessFile; 6  7   8  9 public class RandomAccessFiileDemo1 {10 11         12 13          public static void main(String[] args) throws IOException {14 15                    RandomAccessFile raf = new RandomAccessFile("e://cc.txt", "rw");16 17                    raf.writeBoolean(true);18 19                    raf.writeBytes("he");20 21 //               raf.writeFloat(123.99f);22 23                    raf.write(123);24 25                   26 27                    raf.seek(0);//可以讓指針指向文件的某個位置28 29                    System.out.println(raf.readBoolean());30 31                    System.out.println(raf.read());32 33                    System.out.println(raf.readInt());34 35                    //System.out.println(raf.readInt());36 37                   38 39                    raf.close();40 41                   42 43          }44 45         46 47  48 49 }
View Code

5:對象流. Object 操作對象的流

這里會涉及到一個關鍵字transient(中文:短暫的,臨時的),用來修飾成員變量。被static或者transient修飾的成員變量時改變量的值不會被對象流寫出去的,也不會被讀取到。對象流操作對象必須事項序列化接口Serializable,要不會出現(xiàn)java.io.InvalidClassException 無效的類型異常。

 1 import java.io.FileInputStream; 2  3 import java.io.FileOutputStream; 4  5 import java.io.IOException; 6  7 import java.io.ObjectInputStream; 8  9 import java.io.ObjectOutputStream;10 11  12 13 import com.java.domain.Student;14 15  16 17 public class WriterObjectDemo1 {18 19         20 21          public static void main(String[] args) throws IOException, ClassNotFoundException {22 23                    FileOutputStream fos = new FileOutputStream("e://stu.txt");24 25                    ObjectOutputStream oos = new ObjectOutputStream(fos);26 27                   28 29                    oos.writeObject(new Student("zzz", 12));30 31                    oos.close();32 33                   34 35                    // java.io.InvalidClassException 無效的類型異常36 37                   38 39                    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e://stu.txt"));40 41                    System.out.println(ois.readObject());42 43                    ois.close();44 45                   46 47                   48 49          }50 51  52 53 }
View Code

import java.io.Serializable; public class Student implements Serializable {         //使用對象         private static final long serialVersionUID = 1L;         private String name;         //private static int age;         private transient int age;//      private int age;                 public Student() {                   super();                   // TODO Auto-generated constructor stub         }         public Student(String name, int age) {                   super();                   this.name = name;                   this.age = age;         }         @Override         public String toString() {                   return "Student [name=" + name + ", age=" + age + "]";         }         public void test(){                           }        }
Student類

6:文件類. File

6.1:File:表示文件或者目錄。

6.2 常用的一些方法

          delete() 刪除文件或目錄。

          exists() 判斷文件或目錄是否存在。

          getAbsoluteFile() 返回路徑名的絕對路徑名形式。返回值-File

          getAbsolutePath() 返回路徑名的絕對路徑名字符串。返回值-String

          getName() 返回由路徑名表示的文件或目錄的名稱。

          boolean isDirectory() 路徑名表示的文件是否是一個目錄。

          boolean isFile() 路徑名表示的文件是否是一個標準文件。

          length() 返回路徑名表示的文件的長度。

String[]

list()返回一個字符串數(shù)組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。

String[]

list(FilenameFilterfilter)返回一個字符串數(shù)組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。

File[]

listFiles()返回一個抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中的文件。

File[]

listFiles(FileFilterfilter)返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。

File[]

listFiles(FilenameFilterfilter)返回抽象路徑名數(shù)組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。

          mkdir() 創(chuàng)建此抽象路徑名指定的目錄(只能創(chuàng)建一層)。

          mkdirs() 創(chuàng)建此抽象路徑名指定的目錄(可創(chuàng)建多層)。

經(jīng)典示例:

// 遍歷所有文件

 1   public static void getFiles(String path) { 2  3   4  5                    File file = new File(path); 6  7                    if (!file.exists()) { 8  9                             System.out.println("沒有找到該路徑或者文件");10 11                             return;12 13                    }14 15                    if (file.isFile()) {16 17                             System.out.println(file.getAbsolutePath());18 19                    } else {20 21                             System.out.println(file.getAbsolutePath());22 23                             File[] files = file.listFiles();24 25                             // 遍歷文件26 27                             for (File file2 : files) {// 遞歸遍歷28 29                                      // 如果是目錄在重新調(diào)用自己30 31                                      getFiles(file2.getAbsolutePath());32 33                             }34 35                    }36 37          }

// 刪除所有文件

 1   public static void deleteFile2(String path) { 2  3                    File file = new File(path); 4  5                    if (!file.exists()) { 6  7                             return; 8  9                    }10 11                    if (file.isFile()) {12 13                             file.delete();14 15                    } else {16 17                             File[] files = file.listFiles();18 19                             for (File file2 : files) {20 21                                      deleteFile2(file2.getAbsolutePath());22 23                             }24 25                             file.delete();26 27                    }28 29          }


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东城区| 阿图什市| 墨脱县| 密山市| 襄汾县| 双牌县| 德州市| 准格尔旗| 龙游县| 潼南县| 卢龙县| 扶绥县| 襄汾县| 普格县| 株洲县| 浠水县| 咸丰县| 石狮市| 洮南市| 昂仁县| 龙口市| 喀喇| 保靖县| 长汀县| 阳谷县| 丹凤县| 全南县| 武山县| 永和县| 阳城县| 井陉县| 搜索| 西乌珠穆沁旗| 准格尔旗| 通山县| 永嘉县| 汽车| 图木舒克市| 镇雄县| 民乐县| 荥经县|