真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

IO流內(nèi)容整理-創(chuàng)新互聯(lián)

IO流概述
IO流用來處理設(shè)備之間的數(shù)據(jù)傳輸
Java對數(shù)據(jù)的操作是通過流的方式
Java用于操作流的對象都在IO包中
IO流分類
按照數(shù)據(jù)流向
輸入流 讀入數(shù)據(jù)
輸出流 寫出數(shù)據(jù)
按照數(shù)據(jù)類型
字節(jié)流 可以讀寫任何類型的文件 比如音頻 視頻 文本文件
字符流 只能讀寫文本文件
什么情況下使用哪種流呢?
如果數(shù)據(jù)所在的文件通過windows自帶的記事本打開并能讀懂里面的內(nèi)容,就用字符流。其他用字節(jié)流。
如果你什么都不知道,就用字節(jié)流
IO流基類概述
a:字節(jié)流的抽象基類:
InputStream ,OutputStream。
b:字符流的抽象基類:
Reader , Writer。
注:由這四個類派生出來的子類名稱都是以其父類名作為子類名的后綴。
如:InputStream的子類FileInputStream。
如:Reader的子類FileReader。
FileOutputStream的構(gòu)造方法,
FileOutputStream(File file)
創(chuàng)建一個向指定 File 對象表示的文件中寫入數(shù)據(jù)的文件輸出流
FileOutputStream(File file, boolean append)
創(chuàng)建一個向指定 File 對象表示的文件中寫入數(shù)據(jù)的文件輸出流。
FileOutputStream(FileDescriptor fdObj)
創(chuàng)建一個向指定文件描述符處寫入數(shù)據(jù)的輸出文件流,該文件描述符表示一個到文件 系統(tǒng)中的某個實際文件的現(xiàn)有連接。
FileOutputStream(String name)
創(chuàng)建一個向具有指定名稱的文件中寫入數(shù)據(jù)的輸出文件流。
FileOutputStream(String name, boolean append)
創(chuàng)建一個向具有指定 name 的文件中寫入數(shù)據(jù)的輸出文件流。
使用具體子類FileOutputStream
Io流的分類:

創(chuàng)新互聯(lián)公司始終堅持【策劃先行,效果至上】的經(jīng)營理念,通過多達10多年累計超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的營銷解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:辦公窗簾等企業(yè),備受客戶夸獎。
  • (1): 按照流向進行劃分
    輸入流
    輸出流
    • (2): 按照操作的數(shù)據(jù)類型進行劃分
    • 字節(jié)流
    • 字節(jié)輸入流 InputStream 讀
    • 字節(jié)輸出流 OutputStream 寫
    • 字符流
    • 字符輸入流 Reader 讀
    • 字符輸出流 Writer 寫
      注意事項:
      創(chuàng)建字節(jié)輸出流對象了做了幾件事情?
      a:調(diào)用系統(tǒng)資源創(chuàng)建a.txt文件
      b:創(chuàng)建了一個fos對象
      c:把fos對象指向這個文件
      為什么一定要close()?
      a: 通知系統(tǒng)釋放關(guān)于管理a.txt文件的資源
      b: 讓Io流對象變成垃圾,等待垃圾回收器對其回收
      FileInputStream
      構(gòu)造方法:FileInputStream(File file)
      通過打開一個到實際文件的連接來創(chuàng)建一個 FileInputStream,該文件通過文件系統(tǒng)中 的 File 對象 file 指定。
      FileInputStream(FileDescriptor fdObj)
      通過使用文件描述符 fdObj 創(chuàng)建一個 FileInputStream,該文件描述符表示到文件系統(tǒng) 中某個實際文件的現(xiàn)有連接。
      FileInputStream(String name)
      通過打開一個到實際文件的連接來創(chuàng)建一個 FileInputStream,該文件通過文件系統(tǒng)中 的路徑名 name 指定。
      BufferedOutputStream
      A:緩沖思想
      字節(jié)流一次讀寫一個數(shù)組的速度明顯比一次讀寫一個字節(jié)的速度快很多,
      這是加入了數(shù)組這樣的緩沖區(qū)效果,java本身在設(shè)計的時候,
      也考慮到了這樣的設(shè)計思想(裝飾設(shè)計模式后面講解),所以提供了字節(jié)緩沖區(qū)流
      B:BufferedOutputStream的構(gòu)造方法
      BufferedOutputStream(OutputStream out)
      創(chuàng)建一個新的緩沖輸出流,以將數(shù)據(jù)寫入指定的底層輸出流。
      BufferedOutputStream(OutputStream out, int size)
      創(chuàng)建一個新的緩沖輸出流,以將具有指定緩沖區(qū)大小的數(shù)據(jù)寫入指定的底層輸出流。
      BufferedInputStream
      A:BufferedInputStream的構(gòu)造方法
      BufferedInputStream(InputStream in)
      創(chuàng)建一個 BufferedInputStream 并保存其參數(shù),即輸入流 in,以便將來使用。
      BufferedInputStream(InputStream in, int size)
      創(chuàng)建具有指定緩沖區(qū)大小的 BufferedInputStream 并保存其參數(shù),即輸入流 in,以便 將來使用。
      具體案例演示
      基本字節(jié)流一次讀寫一個字節(jié)
      public class t7 {
      public static void main(String[] args) throws IOException {
      FileInputStream inputStream = new FileInputStream("Student.txt");
      FileOutputStream outputStream = new FileOutputStream("sss.txt");
      int num=0;
      while ((num=inputStream.read())!=-1){
      outputStream.write(num);
      }
      inputStream.close();
      outputStream.close();
      }
      }
      基本字節(jié)流一次讀寫一個字節(jié)數(shù)組
      public class t8 {
      public static void main(String[] args) throws IOException {
      FileInputStream inputStream = new FileInputStream("Student.txt");
      FileOutputStream outputStream = new FileOutputStream("sss.txt");
      int num=0;
      byte[] bytes = new byte[1024 1024];
      while ((num=inputStream.read(bytes))!=-1){
      outputStream.write(bytes,0,num);
      }
      inputStream.close();
      outputStream.close();
      }
      }
      高效字節(jié)流一次讀寫一個字節(jié)
      public class t9 {
      public static void main(String[] args) throws IOException {
      BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream("Student.txt"));
      BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream("sss.txt"));
      int num=0;
      while ((num=inputStream.read())!=-1){
      outputStream.write(num);
      }
      inputStream.close();
      outputStream.close();
      }
      }
      高效字節(jié)流一次讀寫一個字節(jié)數(shù)組
      public class t10 {
      public static void main(String[] args)throws IOException {
      BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream("Student.txt"));
      BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream("sss.txt"));
      int num=0;
      byte[] bytes = new byte[1024
      1024];
      while ((num=inputStream.read(bytes))!=-1){
      outputStream.write(bytes,0,num);
      }
      inputStream.close();
      outputStream.close();
      }
      }

字符流出現(xiàn)的原因:由于字節(jié)流操作中文不是特別方便,所以,java就提供了字符流。

字符流: 字符流 = 字節(jié)流 + 編碼表
編碼: 就是把字符串轉(zhuǎn)換成字節(jié)數(shù)組

  • 把一個字符串轉(zhuǎn)換成一個字節(jié)數(shù)組
  • public byte[] getBytes();使用平臺的默認字符集將此 String編碼為 byte 序列,并將結(jié)果存儲到一個新的 byte 數(shù)組中。
  • public byte[] getBytes(String charsetName) 使用指定的字符集將此 String 編碼為 byte 序列,并將結(jié)果存儲到一個新的 byte 數(shù)組中。
  • 解碼: 把字節(jié)數(shù)組轉(zhuǎn)換成字符串
  • public String(byte[] bytes): 通過使用平臺的默認字符集解碼指定的 byte 數(shù)組,構(gòu)造一個新的 String。
  • public String(byte[] bytes, String charsetName) 通過使用指定的 charset 解碼指定的 byte 數(shù)組,構(gòu)造一個新的 String。
  • 使用什么字符集進行編碼,那么就是使用什么字符集進行解碼
  • 老地方 ----- 十進制 ---- 二進制 ---- 發(fā)出去
  • 接收 ---- 二進制 ---- 十進制 --- 老地方
    編碼:把看得懂的變成看不懂的: String -- byte[]
    解碼:把看不懂的變成看得懂的: byte[] -- String
    OutputStreamWriter
    OutputStreamWriter的構(gòu)造方法
    OutputStreamWriter(OutputStream out):根據(jù)默認編碼(GBK)把字節(jié)流的數(shù)據(jù)轉(zhuǎn)換為字符流
    OutputStreamWriter(OutputStream out,String charsetName):根據(jù)指定編碼把字節(jié)流數(shù)據(jù)轉(zhuǎn)換為字符流
    方法概述
    public void write(int c) 寫一個字符
    public void write(char[] cbuf) 寫一個字符數(shù)組
    public void write(char[] cbuf,int off,int len) 寫一個字符數(shù)組的 一部分
    public void write(String str) 寫一個字符串
    public void write(String str,int off,int len) 寫一個字符串的一部分
    InputStreamReader
    InputStreamReader的構(gòu)造方法
    InputStreamReader(InputStream is):用默認的編碼(GBK)讀取數(shù)據(jù)
    InputStreamReader(InputStream is,String charsetName):用指定的編碼讀取數(shù)據(jù)
    方法概述
    public int read() 一次讀取一個字符
    public int read(char[] cbuf) 一次讀取一個字符數(shù)組 如果沒有讀到 返回-1
    FileWriter和FileReader
    FileReader和FileWriter的出現(xiàn)
    轉(zhuǎn)換流的名字比較長,而我們常見的操作都是按照本地默認編碼實現(xiàn)的,
    所以,為了簡化我們的書寫,轉(zhuǎn)換流提供了對應(yīng)的子類。
    FileWriter
    FileReader
    字符流便捷類: 因為轉(zhuǎn)換流的名字太長了,并且在一般情況下我們不需要制定字符集,
    于是java就給我們提供轉(zhuǎn)換流對應(yīng)的便捷類
    轉(zhuǎn)換流 -------------------------- 便捷類
    OutputStreamWriter ------- FileWriter
    InputStreamReader ------- FileReader
    字符緩沖流的特殊功能
    BufferedWriter: public void newLine():根據(jù)系統(tǒng)來決定換行符 具有系統(tǒng)兼容性的換行符
    BufferedReader: public String readLine():一次讀取一行數(shù)據(jù) 是以換行符為標記的 讀到換行符就換行 沒讀到數(shù)據(jù)返回null
    包含該行內(nèi)容的字符串,不包含任何行終止符,如果已到達流末尾,則返回 null
    字符流復(fù)制文件
    基本的流一次一個字符
    public class t1 {
    public static void main(String[] args) throws IOException {
    InputStreamReader reader = new InputStreamReader(new FileInputStream("Student.txt"));
    OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("SSS.txt"));
    int len=0;
    while ((len=reader.read())!=-1){
    writer.write(len);
    writer.flush();
    }
    writer.close();
    reader.close();
    }
    }
    基本的流一次一個字符數(shù)組
    public class t2 {
    public static void main(String[] args) throws IOException {
    InputStreamReader reader = new InputStreamReader(new FileInputStream("Student.txt"));
    OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("sss.txt"));
    int len=0;
    char[] chars = new char[1024 * 1024];
    while ((len=reader.read(chars))!=-1){
    writer.write(chars,0,len);
    writer.flush();
    }
    reader.close();
    writer.close();
    }
    }
    高效的流一次一個字符
    public class t3 {
    public static void main(String[] args) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader("Student.txt"));
    BufferedWriter writer = new BufferedWriter(new FileWriter("sss.txt"));
    int len=0;
    while ((len=reader.read())!=-1){
    writer.write(len);
    writer.flush();
    }
    reader.close();
    writer.close();
    }
    }

高效的流一次一個字符數(shù)組
public class t4 {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("Student.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("sss.txt"));
int len=0;
char[] chars = new char[1024 * 1024];
while ((len=reader.read(chars))!=-1){
writer.write(chars,0,len);
writer.flush();
}
reader.close();
writer.close();
}
}
高效的流一次一行字符串
public class t5 {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("Student.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("sss.txt"));
String len=null;
while ((len=reader.readLine())!=null){
writer.write(len);
writer.newLine();
writer.flush();
}
reader.close();
writer.close();

}

}
IO流(鍵盤錄入學(xué)生信息按照總分排序并寫入文本文件)
public class Student implements Comparable{
private String name;
private int chinese;
private int math;
private int English;
private int all;

public Student() {
}

public Student(String name, int chinese, int math, int english, int all) {
    this.name = name;
    this.chinese = chinese;
    this.math = math;
    English = english;
    this.all = all;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getChinese() {
    return chinese;
}

public void setChinese(int chinese) {
    this.chinese = chinese;
}

public int getMath() {
    return math;
}

public void setMath(int math) {
    this.math = math;
}

public int getEnglish() {
    return English;
}

public void setEnglish(int english) {
    English = english;
}

public int getAll() {
    return all;
}

public void setAll(int all) {
    this.all = all;
}

@Override
public String toString() {
    return "學(xué)生: " + "姓名~┏" + name + '┒' +
            ", 語文~" + chinese +
            ", 數(shù)學(xué)~" + math +
            ", 英語~" + English +
            ",總分~" + all ;
}

@Override
public int compareTo(Student student) {
    int num=-(this.all-student.all);
    int num2=num==0?this.name.compareTo(student.name):num;
    return num2;
}

}

public class text3 {
/ 3.A:案例演示: 需求:鍵盤錄入3個學(xué)生信息(
姓名,語文成績(chineseScore),數(shù)學(xué)成績(mathScore),英語成績(englishScore)),
/
public static void main(String[] args) throws IOException {
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("Student.txt"));
Scanner scanner = new Scanner(System.in);
TreeSet students = new TreeSet<>();
for (int i = 0, n = 1; i < 3; i++, n++) {
Student student = new Student();
System.out.println("請輸入第" + n + "個學(xué)生的姓名");
String name = scanner.nextLine();
student.setName(name);
System.out.println("請輸入第" + n + "個學(xué)生的語文成績");
int chinese = scanner.nextInt();
student.setChinese(chinese);
System.out.println("請輸入第" + n + "個學(xué)生的數(shù)學(xué)成績");
int math = scanner.nextInt();
student.setMath(math);
System.out.println("請輸入第" + n + "個學(xué)生的英語成績");
int English = scanner.nextInt();
student.setEnglish(English);
scanner = new Scanner(System.in);
int num = chinese + math + English;
student.setAll(num);
students.add(student);
}

for (Student s : students) {
        String s1 = String.valueOf(s);
        out.write(s1.getBytes());
        out.write("\n\r".getBytes());
    }
    out.close();

}

}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當(dāng)前題目:IO流內(nèi)容整理-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://weahome.cn/article/dggjdh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部