生活随笔
收集整理的這篇文章主要介紹了
018IO流
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
I/O流
文件字節輸入流 FileInputStream
package com
.stream
;import java
.io
.FileInputStream
;
public class Demo01 {public static void main(String
[] args
) throws Exception
{FileInputStream fileInputStream
= new FileInputStream("d:\\File.txt");System
.out
.println("單個字節===================");
byte[] bytes
= new byte[1024];int count
= 0;while ((count
= fileInputStream
.read(bytes
)) != -1) {System
.out
.println(new String(bytes
,0,count
));}}
}
文件字節輸出流 FileOutputStream
package com
.stream
;import java
.io
.FileOutputStream
;
public class Demo02 {public static void main(String
[] args
) throws Exception
{FileOutputStream fileOutputStream
= new FileOutputStream("d:\\FileOutputStream.txt", true);
String string
= "Hello World";fileOutputStream
.write(string
.getBytes());fileOutputStream
.close();}
}
文件的拷貝(輸入流讀取–>輸出流寫出)
package com
.stream
;import java
.io
.FileInputStream
;
import java
.io
.FileOutputStream
;
public class Demo03 {public static void main(String
[] args
) throws Exception
{FileInputStream fileInputStream
= new FileInputStream("d:\\t1.png");FileOutputStream fileOutputStream
= new FileOutputStream("d:\\t2.png");byte[] bytes
= new byte[1024];int count
= 0;while ((count
= fileInputStream
.read(bytes
)) != -1) {fileOutputStream
.write(bytes
, 0 , count
);}fileInputStream
.close();fileOutputStream
.close();}
}
字節緩沖流輸入 BufferedInputStream
package com
.stream
.Buffered
;import java
.io
.BufferedInputStream
;
import java
.io
.FileInputStream
;
public class Demo01 {public static void main(String
[] args
) throws Exception
{FileInputStream fileInputStream
= new FileInputStream("d:\\File.txt");BufferedInputStream bufferedInputStream
= new BufferedInputStream(fileInputStream
);
byte[] bytes
= new byte[10];int count
= 0;while ((count
= fileInputStream
.read(bytes
)) != -1) {System
.out
.print(new String(bytes
, 0, count
));}bufferedInputStream
.close();fileInputStream
.close();}
}
字節緩沖流輸出 BufferedOutputStream
package com.stream.Buffered;import java.io.BufferedOutputStream;
import java.io.FileOutputStream;/*** @ClassName Demo02* @Description 字節緩沖流 輸出 BufferedOutputStream* @Author AOA* @Date 2021/1/13 15:07* Version 1.0**/
public class Demo02 {public static void main(String[] args) throws Exception {//創建字符緩沖流FileOutputStream fileOutputStream = new FileOutputStream("d:\\buffered.txt", true);BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);//寫入for (int i = 0; i < 2; i++) {bufferedOutputStream.write("Hello Worled\r\n".getBytes());//寫入緩沖區bufferedOutputStream.flush();//刷新,從緩沖區寫入硬盤}//關閉字節緩沖流,close()里面自帶flush()方法bufferedOutputStream.close();}
}
```## 對象輸出流 ObjectOutputStream (序列化) 過濾流```java
package com.stream.ObjectStream;import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;/*** @ClassName Demo01* @Description ObjectOutputStream對象輸出流,序列化操作* 注意事項:* (1)序列化類需要實現Serializable接口* (2)序列化類中的對象屬性也要求實現Serializable接口* (3)序列化版本號:確保序列化的類和反序列化的類是同一個類* (4)使用transient修飾的對象屬性,無法被序列化* (5)靜態屬性無法被序列化* (6)序列化多個對象使用集合* @Author AOA* @Date 2021/1/13 15:52* Version 1.0**/
public class Demo01 {public static void main(String[] args) throws Exception{//對象流FileOutputStream stream = new FileOutputStream("d:\\stu.bin");ObjectOutputStream outputStream = new ObjectOutputStream(stream);Student s1 = new Student("張三", 18);Student s2 = new Student("李四", 20);//寫入
// outputStream.writeObject(s1);ArrayList<Student> list = new ArrayList<>();list.add(s1);list.add(s2);outputStream.writeObject(list);outputStream.flush();//關閉outputStream.close();System.out.println("序列化完畢");}
}
```## 對象輸入流 ObjectInputStream (反序列化) 過濾流```java
package com.stream.ObjectStream;import java.io.FileInputStream;
import java.io.ObjectInputStream;/*** @ClassName Demo02* @Description TODO* @Author AOA* @Date 2021/1/13 16:18* Version 1.0**/
public class Demo02 {public static void main(String[] args) throws Exception{//創建對象流FileInputStream f = new FileInputStream("d:\\stu.bin");ObjectInputStream inputStream = new ObjectInputStream(f);//讀取對象,(反序列化)
// Object o = inputStream.readObject();Object o = inputStream.readObject();System.out.println(o.toString());//關閉inputStream.close();System.out.println("反序列化完畢");}
```## 字符輸入流 FileReader```java
package com.stream.FileReader;import java.io.FileReader;/*** @ClassName Demo01* @Description 字符輸入流 FileReader* @Author AOA* @Date 2021/1/14 16:11* Version 1.0**/
public class Demo01 {public static void main(String[] args) throws Exception {//創建字符流FileReader fileReader = new FileReader("d:\\work\\hello.txt");//讀取//單個字符讀取
// int data = 0;
// while ((data = fileReader.read()) != -1) {
// System.out.print((char) data);
// }//多個字符讀取char[] chars = new char[1024];int count = 0;while ((count = fileReader.read(chars)) != -1) {System.out.println(new String(chars, 0 , count));}//關閉fileReader.close();}
}
```## 字符輸出流 FileWriter```java
package com.stream.FileReader;import java.io.FileWriter;/*** @ClassName Demo02* @Description FileWriter 字符輸出流* @Author AOA* @Date 2021/1/14 16:49* Version 1.0**/
public class Demo02 {public static void main(String[] args) throws Exception{//創建FileWriter fileWriter = new FileWriter("d:\\work\\write.txt");//寫出for (int i = 0; i < 3; i++) {fileWriter.write("你好嗎?\r\n");fileWriter.flush();}//關閉fileWriter.close();}
}
```## 字符流 FileReader 和 FileWriter 復制文本文件```java
package com.stream.FileReader;import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;/*** @ClassName Demo03* @Description* (1)FileWriter和Fileeader只能復制文本文件,不可以復制字節文件和二進制文件* (2)使用字節流可以復制任意文件* @Author AOA* @Date 2021/1/15 14:22* Version 1.0**/
public class Demo03 {public static void main(String[] args) throws IOException {//創建字符流FileReader fileReader = new FileReader("d:\\work\\write.txt");FileWriter fileWriter = new FileWriter("d:\\work\\write2.txt");//復制int data = 0;while ((data = fileReader.read()) != -1) {fileWriter.write(data);}//關閉fileReader.close();fileWriter.close();System.out.println("復制完畢");}
}
```## 字符緩沖流 BufferedReader 一行一行的讀取文件```java
package com.stream.FileReader;import java.io.BufferedReader;
import java.io.FileReader;/*** @ClassName Demo04* @Description 字符緩沖流額讀取 BufferedReader* @Author AOA* @Date 2021/1/15 15:17* Version 1.0**/
public class Demo04 {public static void main(String[] args) throws Exception{//創建字符緩沖流FileReader fileReader = new FileReader("d:\\work\\write.txt");BufferedReader bufferedReader = new BufferedReader(fileReader);// 讀取// 單個讀取
// char[] chars = new char[1024];
// int count = 0;
// while ((count = bufferedReader.read(chars)) != -1) {
// System.out.print(new String(chars, 0, count));
// }//一行一行的讀取String line = null;while ((line = bufferedReader.readLine()) != null) {System.out.println(line);}// 關閉bufferedReader.close();}
}
```## 字符緩沖流 BufferedWriter 輸出```java
package com.stream.FileReader;import java.io.BufferedWriter;
import java.io.FileWriter;/*** @ClassName Demo05* @Description 使用字符緩沖流輸出 BufferedWriter* @Author AOA* @Date 2021/1/15 15:43* Version 1.0**/
public class Demo05 {public static void main(String[] args) throws Exception {//創建字符緩沖流FileWriter fileWriter = new FileWriter("d:\\work\\BufferedWriter.txt");BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);//寫入for (int i = 0; i < 10; i++) {bufferedWriter.write("你好嗎?");bufferedWriter.newLine();bufferedWriter.flush();}//關閉bufferedWriter.close();}
}
```## 轉換流 InputStreamReader 讀取```java
package com.stream.StreamReader;import java.io.FileInputStream;
import java.io.InputStreamReader;/*** @ClassName Demo01* @Description 轉換流 將字節流 讀到內存 變為字符流* 使用指定的編碼格式* @Author AOA* @Date 2021/1/15 21:07* Version 1.0**/
public class Demo01 {public static void main(String[] args) throws Exception{//轉換流需要傳入字節流FileInputStream fileInputStream = new FileInputStream("d:\\work\\hello.txt");//創建轉換流InputStreamReader reader = new InputStreamReader(fileInputStream, "UTF-8");//讀取int data = 0;while ((data = reader.read()) != -1) {System.out.print((char) data);}//關閉reader.close();}
}
```## 轉換流 OutputStreamReader 寫出```java
package com.stream.StreamReader;import java.io.FileOutputStream;
import java.io.OutputStreamWriter;/*** @ClassName Demo02* @Description 轉換流 OutputStreamReader 將字符流 存入 硬盤 變 字節流* @Author AOA* @Date 2021/1/15 21:40* Version 1.0**/
public class Demo02 {public static void main(String[] args) throws Exception{FileOutputStream fileOutputStream = new FileOutputStream("d:\\work\\OutputStreamWriter");//創建轉換流OutputStreamWriter writer = new OutputStreamWriter(fileOutputStream, "gbk");//輸出for (int i = 0; i < 5; i++) {writer.write("年后\r\n");writer.flush();}//關閉writer.close();}
}
```## File文件類 獲取文件信息```java
package com.stream.File;import java.io.File;
import java.util.Date;/*** @ClassName Demo01* @Description File文件操作類* (1)分隔符* (2)文件操作* (3)文件夾操作* @Author AOA* @Date 2021/1/16 15:05* Version 1.0**/
public class Demo01 {public static void main(String[] args) throws Exception{separator();fileope();directoryOpe();}public static void separator() {System.out.println("路徑分隔符:" + File.pathSeparator);System.out.println("名稱分隔符:" + File.separator);}public static void fileope() throws Exception{//創建文件File file = new File("d:\\work\\file.txt");if (!file.exists()) {boolean newFile = file.createNewFile();System.out.println(newFile);} else {System.out.println("文件已存在");}//刪除文件//正常刪除文件// boolean delete = file.delete();
// System.out.println("是否刪除文件:" + delete);//jvm退出時刪除文件// file.deleteOnExit();
// Thread.sleep(5000);//獲取文件消息System.out.println("文件名字:" + file.getName());System.out.println("文件路徑:" + file.getPath());System.out.println("文件絕對路徑:" + file.getAbsolutePath());System.out.println("文件父目錄:" + file.getParent());System.out.println("文件長度:" + file.length());System.out.println("文件創建時間:" + new Date(file.lastModified()).toLocaleString());//判斷System.out.println("是否能寫:" + file.canWrite());System.out.println("是否是隱藏的:" + file.isHidden());System.out.println("是否是文件:" + file.isFile());}public static void directoryOpe() throws Exception{//創建文件夾File file = new File("d:\\work\\aa\\bb");if (!file.exists()) {
// file.mkdir();//單級目錄System.out.println("新建文件夾結果:" + file.mkdirs());//多級目錄} else {System.out.println("文件夾已存在");}//刪除文件夾//正常刪除
// boolean delete = file.delete();
// System.out.println("刪除文件夾結果:" + delete);//JVM退出時刪除
// file.deleteOnExit();
// Thread.sleep(5000);//獲取文件夾信息System.out.println("文件夾的絕對路徑:" + file.getAbsolutePath());System.out.println("文件夾的路徑:" + file.getPath());System.out.println("文件夾的父路徑:" + file.getParent());System.out.println("文件夾的名字:" + file.getName());System.out.println("文件夾的生成時間:" + new Date(file.lastModified()).toLocaleString() );//判斷System.out.println("文件夾是否是隱藏的" + file.isHidden());System.out.println("是否是文件夾" + file.isDirectory());//遍歷文件夾File file1 = new File("d:\\work");// String[] list = file1.list(); //只有文件名File[] files = file1.listFiles(); //還有路徑for (File file2 : files) {System.out.println(file2);}}
}
```## 遞歸文件夾```java
package com.stream.File;import java.io.File;
import java.nio.file.Files;/*** @ClassName ListFiles* @Description (1)遞歸遍歷文件夾 (2)遞歸刪除文件夾* @Author AOA* @Date 2021/1/19 17:37* Version 1.0**/
public class ListFiles {public static void main(String[] args) {//ListDir(new File("d:\\work\\aa"));DelectDir(new File("d:\\work\\aa"));}public static void ListDir(File dir) {System.out.println(dir.getAbsolutePath());File[] files = dir.listFiles();if (files != null && files.length > 0) {for (File file : files) {if (file.isDirectory()) {ListDir(file);} else {System.out.println(file.getAbsolutePath());}}}}public static void DelectDir(File dir) {File[] files = dir.listFiles();if (files != null && files.length > 0) {for (File file : files) {if (file.isDirectory()) {DelectDir(file);} else {System.out.println(file.getName() + "被刪除了" + file.delete());}}}System.out.println(dir.getName() + "被刪除了" + dir.delete());}
}
```## Properties的使用```java
package com.stream.File;import java.io.*;
import java.util.Map;
import java.util.Properties;
import java.util.Set;/*** @ClassName Demo02* @Description Properties屬性:的使用* @Author AOA* @Date 2021/1/19 19:35* Version 1.0**/
public class Demo02 {private PrintWriter printWriter;public static void main(String[] args) throws Exception{Properties properties = new Properties();properties.setProperty("username", "張三");properties.setProperty("age", "20");System.out.println(properties);//遍歷//keySet()System.out.println("==========keySet==========");Set<Object> objects = properties.keySet();for (Object object : objects) {System.out.println(object + ":" + properties.get(object));}//entrySet()System.out.println("==========entrySet==========");Set<Map.Entry<Object, Object>> entries = properties.entrySet();for (Map.Entry<Object, Object> entry : entries) {System.out.println(entries);}//stringPropertiesNameSystem.out.println("==========stringPropertyNames==========");Set<String> strings = properties.stringPropertyNames();for (String string : strings) {System.out.println(string + ":" + properties.getProperty(string));}//和流有關的方法//-------------list方法-------------PrintWriter printWriter = new PrintWriter("d:\\work\\print.txt");properties.list(printWriter);printWriter.close();PrintStream printStream = new PrintStream("d:\\work\\print1.txt");properties.list(printStream);printStream.close();//-------------store方法 保存-------------// FileOutputStream fileOutputStream = new FileOutputStream("d:\\work\\print.properties");
// properties.store(fileOutputStream, "Hello World!!");
// fileOutputStream.close();// FileWriter fileWriter = new FileWriter("d:\\work\\print1.properties");
// properties.store(fileWriter, "Hello");
// fileWriter.close();//-------------load方法 讀取-------------System.out.println("========load.fileInputStream=======");FileInputStream fileInputStream = new FileInputStream("d:\\work\\print.properties");Properties properties1 = new Properties();properties1.load(fileInputStream);System.out.println(properties1);fileInputStream.close();System.out.println("========load.fileReader=======");FileReader fileReader = new FileReader("d:\\work\\print1.properties");properties1.load(fileReader);System.out.println(properties1);fileReader.close();}
}
```
總結
以上是生活随笔為你收集整理的018IO流的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。