web開發裡html的用法,詳細介紹了裡面的各種標籤、用法
阿新 • • 發佈:2022-03-20
流是一組有序的資料序列
Java由資料流處理輸入/輸出模式,程式從指向源的輸入流中讀取源中的資料,通過向輸出流中寫入資料把資訊傳遞到目的地,以下圖片可以說明,圖片分別為輸入模式、輸出模式
InputStream和OutputStream
InputStream類和OutputStream類都可以通過檔案物件來對檔案進行操作,看如下程式碼:
public static void readByteFromFile() throws IOException {
File file = new File("D:/test.txt");
byte[] bytes = new byte[(int) file.length()];
InputStream is = new FileInputStream(file);
int size = is.read(bytes);
System.out.println(size+" "+new String(bytes));
is.close();
}
-
通過D盤的檔案來建立一個File物件
-
建立一個位元組型陣列,陣列長度為file.length,此時陣列內的值都為預設值0
-
然後通過FileInputStream實現類將InputStream抽象類例項化,並將file載入進去
-
-
輸出檔案內容
-
將流關閉
接下來用OutputStream類將資料流寫入目的地
public static void writeByteToFile() throws IOException {
//1.建立一個字串
String hello = new String("Hello World!");
//2.通過getBytes方法獲取字串的位元組流,返回一個byte型陣列
byte[] bytes = hello.getBytes();
//3.獲得一個檔案物件
File file = new File("D:/test.txt");
//4.例項化OutputStream,將file物件載入進去
OutputStream os = new FileOutputStream(file);
//5.呼叫write方法,將位元組陣列寫入次輸出流
os.write(bytes);
//6.將輸出流關閉
os.close();
}
FileReader類和FileWrite類
將上面的例子修改一下
-
FileReader
public static void readByteFromFile() throws IOException {
File file = new File("D:/test.txt");
char[] chars = new char[(int) file.length()];
Reader reader = new FileReader(file);
int size = reader.read(chars);
System.out.println(size+" "+new String(reader));
reader.close();
}
程式碼順序不變,只是將位元組陣列改成了字元陣列,將FileOutputStream類寫成了FileReader類,結果都是一樣,那麼兩個類的不同點在哪裡呢?
原來FileOutputStream這個類只提供了對位元組或位元組陣列的讀取方法,由於漢字在檔案中佔用兩個位元組,如果使用位元組流,讀取不好可能會出現亂碼現象,採用字元流就可以避免
//System.out.println(size+" "+new String(reader));
System.out.println(size+" "+new String(chars,0,size));
可以將offset的值改變,測試一下
-
FileWrite類似
public static void writeCharToFile() throws IOException{
String hello = new String("hello world!");
File file = new File("D:/test.txt");
Writer os = new FileWriter(file);
os.write(hello);
os.close();
}
這裡的write方法可以直接傳入String字串,不需要對字串進行操作
BufferedReader類與BufferedWriter類
package com.jiang.io;
import java.io.*;
public class Student {
public static void main(String[] args) {
String content[] = {"明日科技","Java部","快速入門"};
File file = new File("D:/test.txt");
try {
// FileWriter fw = new FileWriter(file);
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
for (int i = 0; i < content.length; i++) {
bufw.write(content[i]);
bufw.newLine();
}
bufw.flush();
bufw.close();
bufw.close();
}catch (Exception e)
{
e.printStackTrace();
}
try {
// FileReader fr = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String s = null;
int i = 0;
while ((s = bufferedReader.readLine())!=null)
{
i++;
System.out.println(s);
}
bufferedReader.close();
}catch (Exception e)
{
e.printStackTrace();
}
}
}
-
這裡需要注意的是BufferedWrite和BufferedReader的構造方法引數需要傳入一個引用物件,使用readLine()方法不用傳參,直接返回檔案的一行資料
參考:https://blog.csdn.net/suifeng3051/article/details/48344587