Java入門——文件輸入輸出流 FileInputStream和FileOutputStream

主要爲了演示文件輸入輸出流的簡單操作,在此之前要會文件的簡單操作。所以,主要分三部分講:文件操作、文件輸入流、文件輸出流。

注:對於這些類,很多方法不記得要學會查看api。

File

只寫了幾種簡單的操作,具體看代碼,註釋講解。

package File;

import java.io.File; //File類需要引用

public class TestFile {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		File f =new File("D:\\文學社的舊文件\\我的稿子");
		File[] files= f.listFiles(); //獲取路徑下的所有文件和文件夾
		for(File file:files) { 
			System.out.println("文件名:"+file.getName()); //獲取文件名稱
			System.out.println("文件路徑:"+file.getPath()); //獲取文件路徑
			if(file.isDirectory()) { //判斷是否爲文件夾
				System.out.println("這是一個文件夾!");
			}
			System.out.println(); //爲了結果顯示更清晰,空格隔開每個文件的信息
		}

	}

}

顯示結果:

簡單總結一下我代碼中用到的方法:

  1. File f =new File("D:\\文學社的舊文件\\我的稿子");  構造方法,參數爲文件路徑;
  2. File[] files= f.listFiles()  獲得路徑下的文件及文件夾;
  3. file.getName() 獲得文件名稱
  4. file.getPath() 獲得文件路徑
  5. isDirectory() 判斷是否爲目錄

FileInputStream

文件輸入流,可用來讀取文件中的內容。

先看代碼和註釋:

package File;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;


public class TestFileInputStream_FileOutStream {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//演示文件輸入部分
		FileInputStream fis =null; //定義一個文件輸入流
		try {
			//初始化得到文件路徑
			 fis=new FileInputStream("C:\\Users\\123\\Desktop\\test.txt");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		int i =0; //接收讀入的字節
		try {
			i=fis.read(); //一個字節一個字節地讀取文件內容
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		while(i!=-1) {
			System.out.print((char)i); //將讀入的字節轉換爲字符打印到控制檯
			
			try {
				i=fis.read(); //然後繼續讀下一個字節
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		//操作完了之後,要記得關閉文件輸入流
		try {
			fis.close();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		
	}

}

注意事項:

  1. read()方法是讀取一個字節,所以不可以準確讀取漢字,一個漢字需要兩個字節來表示;
  2. 對文件流操作結束之後要記得關閉文件流。

FileOutputStream

文件輸出流,用來向文件中寫入內容。看代碼:

package File;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestFileInputStream_FileOutStream {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// 演示輸出部分(兩種)
		//定義需要寫入文件的字符串
		String s = "I am learning how to  write data in files by using IO Stream! ";
		FileOutputStream fos = null;
		FileOutputStream fos1 = null;

		File f = new File("C:\\Users\\123\\Desktop\\f.txt");
		File f1 = new File("C:\\Users\\123\\Desktop\\f1.txt");

		// 檢查文件是否存在,不存在時創建文件
		if (!f.exists()) {
			// f.mkdirs(); //生成文件夾
			try {
				f.createNewFile();// 生成文件
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (!f1.exists()) {
			// f1.mkdirs(); //生成文件夾
			try {
				f1.createNewFile(); // 生成文件
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		// 初始化輸出流變量
		try {
			fos = new FileOutputStream(f);
			fos1 = new FileOutputStream(f1);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		byte[] b = s.getBytes(); // 把要輸出的內容轉換爲byte數組

		try {
			// 用文件輸出流的寫方法來往文件中寫東西
			fos.write(b);
			fos1.write(b, 0, b.length / 2); // 使用寫方法的重載方法之寫入部分字符串(第二個參數是寫入的起始位置,第三個參數是寫如的長度)
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 操作完成之後記得關閉文件流
			try {
				fos.close();
				fos1.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}

}

演示了兩種寫入方法:

好了,差不多就這些。使用的時候,結合着api會容易些。

晚安。

發佈了32 篇原創文章 · 獲贊 6 · 訪問量 3030
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章