21天精通java基礎之Day15IO流(一)

Day15:IO流(一)


java.io.File類:

1.凡是與輸入輸出有關的類、接口等都定義在java。io包下。

2.File是一個類,可以表示構造器創建其對象。此對象表示一個文件或一個文件目錄。

3.File類對象是與平臺無關的。

4.File中的方法,僅涉及到如何創建、刪除、重命名等等。

5.路徑:①絕對路徑—包括盤符在內的完整的文件路徑,②相對路徑—在當前文件目錄下文件的路徑。


IO原理:

輸入input:

|———讀取外部數據到程序(內存)中。

輸出output:

|——將程序(內存)數據輸出到存儲設備中。


   IO的體系:

按照數據流向的不同:輸入流,輸出流。

按照處理數據的單位的不同:字節流,字符流(處理文本文件)。

按照角色的不同:節點流(直接作用於文本),處理流。

抽象基類:                  節點流(文件流):                           緩衝流:

|---InputStream                 |---FileInputStream                           |---BufferedInputStream

|---OutputStream              |---FileOutputStream                         |---BufferedOutputStream

|---Reader                         |---FileReader                                   |---BufferedReader

|---Writer                           |---FileWriter                                      |---BufferedWriter


FileInputStream實例:

@Test
	public void TestFileInputStream2() {
		
		// 2.創建一個FileInputStream類的對象
		FileInputStream fis = null;
		try {
			// 1.創建一個File類的對象
			File file = new File("hello.txt");			
			fis = new FileInputStream(file);
			
			// 3.調用FileInputStream的方法實現file文件的讀取。
			// read():讀取文件的一個字節。當執行到文件結尾時,返回-1.	
			int b;
			while((b = fis.read() )!= -1){
				System.out.print((char)b);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			// 4.關閉相應的流
			try {
				if(fis != null){
					fis.close();					
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}
FileOutputStream實例:
@Test
	public void testOutputStream(){
		//1.創建一個File對象,表明要寫入的文件位置
		//輸出的物理文件可以不存在,當執行過程中,若不存在會自動創建。若存在,則會覆蓋原有文件。
		File file = new File("hello2.txt");
		//2.創建一個FileOutputStream的對象,將file的對象作爲形參傳遞給FileOutputStream的構造器中
		FileOutputStream fos = null;
		try {
		//3.寫入操作
			fos = new FileOutputStream(file);
			fos.write(new String("I Love You!").getBytes());
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{
			//4.關閉流
			if(fos != null)
			{
				try {
					fos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

文件複製:

@Test 
	public static void copyFile(String src , String dest)
	{
				//1.提供文件複製的方法
				File f1 = new File(src);
				File f2 = new File(dest);
				
				//2.提供相應的流
				FileInputStream fis = null;
				FileOutputStream fos = null;
				
				try {
					fis = new FileInputStream(f1);
					fos = new FileOutputStream(f2);
					
					//3.實現複製
					byte[] b = new byte[20];
					int len;
					while((len = fis.read(b)) != -1){
						fos.write(b, 0, len);
					}
					
				} catch (Exception e) {
					e.printStackTrace();
					
				}finally{
					//4.關閉流
					if(fos != null){
						try {
							fos.close();
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
					if(fis != null){
						try {
							fis.close();
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
				}
	}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章