1. 程式人生 > >慕課網_文件傳輸基礎——Java IO流

慕課網_文件傳輸基礎——Java IO流

一次 只讀 poi fileutil pat lar 一個 慕課網 inpu

fadf

第1章 文件的編碼

1-1 文件的編碼 (15:07)

第2章 File 類的使用

2-1 File 類常用 API 介紹 (10:50)

import java.io.File;
import java.io.IOException;

public class FileDemo {
	public static void main(String[] args) {
		File file = new File("E:\\helloworld\\java");
		System.out.println(file.exists());// 判斷文件/文件夾是否存在

		if (!file.exists()) {
			file.mkdirs();// 創建目錄
		} else {
			file.delete();
		}

		// 是否是一個目錄
		System.out.println(file.isDirectory());

		// 是否是一個文件
		System.out.println(file.isFile());

		File file2 = new File("E:\\helloworld\\1.txt");
		if (file2.exists()) {
			try {
				file2.createNewFile();// 創建文件
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} else {
			file2.delete();
		}

		System.out.println(file);// file.toString()的內容
		System.out.println(file.getAbsolutePath());
		System.out.println(file.getName());
		System.out.println(file.getParent());
	}
}

2-2 遍歷目錄 (10:26)

import java.io.File;
import java.io.IOException;

//列出File的一些常用操作比如過濾、遍歷等操作

class FileUtils1 {
	/*
	 * 列出制定目錄下(包括其子目錄)的所有文件
	 */
	public static void listDirectory(File dir) throws IOException {
		if (!dir.exists()) {
			throw new IllegalArgumentException("目錄:" + dir + "不存在");
		}
		if (!dir.isDirectory()) {
			throw new IllegalArgumentException(dir + "不是目錄");
		}
		String[] filenames = dir.list();// 返回的是字符串數組 直接子的名稱,不包含子目錄下的內容
		for (String string : filenames) {
			System.out.println(dir + "\\" + string);
		}
	}
}

class FileUtils2 {
	/*
	 * 列出制定目錄下(包括其子目錄)的所有文件
	 */
	public static void listDirectory(File dir) throws IOException {
		if (!dir.exists()) {
			throw new IllegalArgumentException("目錄:" + dir + "不存在");
		}
		if (!dir.isDirectory()) {
			throw new IllegalArgumentException(dir + "不是目錄");
		}
		// 如果要遍歷子目錄下的內容就需要構造成File對象做遞歸操作,File提供了直接返回File對象的API
		File[] files = dir.listFiles();// 返回的是直接子目錄(文件)的對象
		if (files != null && files.length > 0) {
			for (File file : files) {
				if (file.isDirectory()) {
					listDirectory(file);
				} else {
					System.out.println(file);
				}
			}
		}
	}
}

public class FileUtilTest {
	public static void main(String[] args) throws IOException {
		FileUtils2.listDirectory(new File("E:\\kms"));
	}
}

第3章 RandomAccessFile類的使用

3-1 RandomAccessFile基本操作 (17:16)

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

/*
 * java.io.File類用於表示文件(目錄)
 * File類只用於表示文件(目錄)的信息(名稱、大小等),不能用於文件內容的訪問
 * 
 * RandomAccessFile java提供的對文件內容的訪問,既可以讀文件,也可以寫文件。
 * RandomAccessFile支持隨機訪問文件,可以訪問文件的任意位置。
 * 
 * (1)java文件模型
 * 在硬盤上的文件是byte byte byte存儲的,是數據的集合
 * 
 * (2)打開文件
 * 有兩種模式"rw"(讀寫)"r"(只讀)
 * RandomAccessFile raf=new RandomAccessFile(file,"rw");
 * 文件指針,打開文件時指針在開頭pointer=0;
 * 
 * (3)寫文件
 * raf.write(int);只寫一個字節(後8位),同時指針指向下一個位置,準備再次寫入
 * 
 * (4)讀文件
 * int b=raf.read();讀一個字節
 * 
 * (5)文件讀寫完成以後一定要關閉(Oracle官方說明)
 */

public class RafDemo {
	public static void main(String[] args) throws IOException {
		File demo = new File("demo");
		if (!demo.exists()) {
			demo.mkdirs();
		}

		File file = new File(demo, "raf.dat");
		if (!file.exists()) {
			file.createNewFile();
		}

		RandomAccessFile raf = new RandomAccessFile(file, "rw");

		// 指針的位置
		System.out.println(raf.getFilePointer());
		raf.write(‘A‘);// 只寫了一個字節
		
		System.out.println(raf.getFilePointer());
		raf.write(‘B‘);

		int i = 0x7fffffff;
		// 用write方法每次只能寫一個字節,如果要把i寫進去就得寫4次
		raf.write(i >>> 24);// 高8位
		raf.write(i >>> 16);
		raf.write(i >>> 8);
		raf.write(i);
		System.out.println(raf.getFilePointer());

		// 可以直接寫一個int
		raf.writeInt(i);

		String s = "中";
		byte[] gbk = s.getBytes("gbk");
		raf.write(gbk);
		System.out.println(raf.length());

		// 讀文件,必須吧指針移到頭部
		raf.seek(0);
		// 一次性讀取,把文件中的內容都讀到字節數組中
		byte[] buf = new byte[(int) raf.length()];
		raf.read(buf);
		System.out.println(Arrays.toString(buf));

		String s1 = new String(buf, "gbk");
		System.out.println(s1);

		for (byte b : buf) {
			System.out.println(Integer.toHexString(b & 0xff) + " ");
		}

		raf.close();
	}
}

第4章 字節流

4-1 字節流之文件輸入流FileInputStream-1 (15:09)

4-2 字節流之文件輸入流FileInputStream-2 (08:40)

4-3 字節流之文件輸出流FileOutputStream (13:24)

4-4 字節流之數據輸入輸出流 (11:08)

4-5 字節緩沖流 (17:54)

第5章 字符流

5-1 字節字符轉換流 (18:09)

5-2 字符流之文件讀寫流 (05:56)

5-3 字符流的過濾器 (10:25)

第6章 對象的序列化和反序列化

6-1 序列化基本操作 (10:30)

6-2 transient及ArrayList源碼分析 (12:41)

6-3 序列化中子父類構造函數問題 (11:43)

fasdfaf

慕課網_文件傳輸基礎——Java IO流