学会Java输入输出流,看这一篇就够了,建议收藏!
生活随笔
收集整理的這篇文章主要介紹了
学会Java输入输出流,看这一篇就够了,建议收藏!
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、流的概念
Java 語言采用流的機(jī)制來實(shí)現(xiàn)輸入/輸出。 所謂流,就是數(shù)據(jù)的有序排列。 而流可以是從某個源(稱為流源,Source of Stream)出來, 到某個目的地(稱為流匯 ,Sink of Stream)去的。1.1、流的分類
java 中統(tǒng)一將流的類放在 java.io 包下。
1.2、流的處理過程
用來處理流的類又叫做流處理器。
例如:Java 中可以使用 FileInputStream 從一個文件中讀取數(shù)據(jù),FileInputStream 就是一個流處理器 類似的也可以通過FileOutputStream向一個文件中寫入數(shù)據(jù)。
Java 中提供了一種稱作為鏈接的機(jī)制,可以將一個流處理器與另一個流處理器首尾相連,形成一個流管道的鏈接。
類似的也可以向一個文件中寫入數(shù)據(jù)
2、常用流的使用
FileInputStream和FileOutputStream:用于讀取和寫入諸如圖像數(shù)據(jù)之類的原始字節(jié)流 public static void main(String[] args){try{File oldFile=new File("D:\\SoftMgr\\img.jpg");//從本地獲取文件對象File newFile=new File("D:\\SoftMgr\\new.jpg");//寫入本地路徑新文件FileInputStream in=new FileInputStream(oldFile);//用輸入流讀取文件的內(nèi)容FileOutputStream out=new FileOutputStream(newFile);//用輸出流把內(nèi)容寫入新文件int len=0;//如果沒有讀到文件某尾(-1代表讀到文件某尾),輸出流持續(xù)寫while((len=in.read())!=-1){out.write(len);}//流用完后必須要關(guān)閉,先打開的后關(guān)閉,后打開的先關(guān)閉out.close();in.close();}catch(FileNotFoundException e){e.printStackTrace();}catch(IOException e){e.printStackTrace();} }ObjectInputStream和ObjectOutputStream:
對象流,ObjectOutputStream 和ObjectInputStream 分別與FileOutputStream 和FileInputStream 一起使用時,可以為應(yīng)用程序提供對對象圖形的持久存儲。
ObjectInputStream 用于恢復(fù)那些以前序列化的對象。ObjectInputStream 對以前使用ObjectOutputStream 寫入的基本數(shù)據(jù)和對象進(jìn)行反序列化。
//將對象保存到文件必須實(shí)現(xiàn)Serializable序列化接口 @SuppressWarnings("serial") public class User implements Serializable {private String name;private int age;public User(String name, int age) {super();this.name = name;this.age = age; }public String getName() {return name; }public int getAge() {return age; } } public class TestObjectStream {public static void writeObject(Object o) {FileOutputStream file;try {file = new FileOutputStream("E:\\img\\obj.dat");// 對象保存到本地.dat文件ObjectOutputStream out = new ObjectOutputStream(file);out.writeObject(o);out.flush();out.close();} catch (Exception e) {e.printStackTrace();} }public static Object readObject(String path) {Object obj = null;try {FileInputStream file = new FileInputStream(path);ObjectInputStream in = new ObjectInputStream(file);obj = in.readObject();in.close();} catch (Exception e) {e.printStackTrace();}return obj; }public static void main(String[] args) {// writeObject(new User("jack", 35));User user = (User) readObject("E:\\img\\obj.dat");System.out.println("name:" + user.getName());System.out.println("age:" + user.getAge());} }3、InputStream 和 OutputStream
4、Reader 和 Writer
5、節(jié)點(diǎn)流和處理流
節(jié)點(diǎn)流(原始流):可以從或向一個特定的地方(節(jié)點(diǎn))讀寫數(shù)據(jù)。如FileReader. 處理流(鏈接流):是對一個已存在的流的連接和封裝, 通過所封裝的流的功能調(diào)用實(shí)現(xiàn)數(shù)據(jù)讀寫。 如BufferedReader處理流的構(gòu)造方法總是要帶一個其他的流對象做參數(shù)。 一個流對象經(jīng)過其他流的多次包裝,稱為流的鏈接。6、通過URL讀取流
URL類:代表一個統(tǒng)一資源定位符,它是指向互聯(lián)網(wǎng)“資源”的指針。 public static void main(String[] args){try{URL url=new URL("https://127.0.0.1:8090/SoftMgr/dzh.jpg");InputStream in=url.openStream();FileOutputStream out=new FileOutputStream("D:\\SoftMgr\\dyw.jpg");int len=0;byte[] bs=new byte[1024];while((len=in.read(bs))!=-1){out.write(bs,0,len);}out.flush();out.close();in.close();}catch(Exception e){e.printStackTrace();} }總結(jié)
以上是生活随笔為你收集整理的学会Java输入输出流,看这一篇就够了,建议收藏!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决vscode中文乱码问题(不是改GB
- 下一篇: 【UWB定位】 - DWM1000模块调