Java IO基礎總結


      Java中使用IO(輸入輸出)來讀取和寫入,讀寫設備上的數據、硬盤文件、內存、鍵盤......,根據數據的走向可分為輸入流和輸出流,這個走向是以內存為基准的,即往內存中讀數據是輸入流,從內存中往外寫是輸出流。

      根據處理的數據類型可分為字節流和字符流

  1.字節流可以處理所有數據類型的數據,在java中以Stream結尾

  2.字符流處理文本數據,在java中以Reader和Writer結尾。

       我們來看個IO流的詳解圖:

 

 

 IO流的本質是對字節和字符的處理,那么我們平時也是用來處理文件的,就從文件處理開始接觸這方面的知識。

1.文件操作(創建文件和文件夾,查看文件)

		//創建一個文件路徑
		File file = new File("D:\\testData.txt");
		if(file.exists()){
		//得到文件路徑
		System.out.println(file.getAbsolutePath());
		//得到文件大小
		System.out.println("文件大小:"+file.length());
		}
		//創建文件和創建文件夾
		File file1 = new File("d:\\iotest.txt");
		if(!file1.exists())
		{
			try {
				file1.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}else{
			System.out.println("文件已存在");
		}
		//創建文件夾
		File file2 = new File("d:\\testIO");
		if(file2.isDirectory())
		{
			System.out.println("文件夾存在");
		}else{
			file2.mkdir();
		}
		
		//列出一個文件夾下的所有文件
		File f = new File("d:\\testIO");
		if(f.isDirectory())
		{
			File lists[] = f.listFiles();
			for(int i=0;i<lists.length;i++)
			{
				System.out.println(lists[i].getName());
			}
		}

常用字節流FileInputStream和FileOutputStream:

FileInputStream:

FileInputStream fis = null;
		try {
			fis = new FileInputStream("D:\\testData.txt");
			byte bytes[]=new byte[1024];
			int n=0;
			while((n=fis.read(bytes))!= -1){
				String str = new String(bytes,0,n);
				System.out.print(str);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			try {
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

 

查看輸出:

 

FileOutputStream:

FileOutputStream fos = null;
		try {
			fos = new FileOutputStream("D:\\testData.txt");
			String str = "報效國家,舍生忘死";
			byte bytes[] = str.getBytes();
			fos.write(bytes);
		} catch (Exception e) {
            e.printStackTrace();     
		} finally {
			try {
				fos.close();
			} catch (Exception e2) {
                e2.printStackTrace();
			}
		}

查看一下:

如果是續寫文件,則可以加上參數:

字符流FileReader和FileWriter:

//字符流
		//文件寫出  輸入流
		FileReader freader = null;
		//寫入到文件  輸出流
		FileWriter fwriter = null;
		try {	
			//創建輸入對象
			freader = new FileReader("d:\\testData.txt");
			//創建輸出對象
			File f1 = new File("e:\\testData.txt");
			if(!f1.exists()){
				f1.createNewFile();
			}
			fwriter = new FileWriter(f1);
			
			//讀入到內存
			char chars[] = new char[1024];
			int n=0;
			while((n=freader.read(chars))!= -1)
			{
				fwriter.write(chars);
				//System.out.println(chars);
			}
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
			// TODO: handle exception
		}finally{
	        try{
			freader.close();
			fwriter.close();
	        }catch(Exception e){
	        	e.printStackTrace();
	        }
		}
		
		
		
		//緩沖字符流  bufferedReader  bufferedWriter
		BufferedReader bfreader = null;
		try {
			FileReader freader = new FileReader("d:\\testData.txt");
			bfreader = new BufferedReader(freader);
			//循環讀取
			String s ="";
			while((s=bfreader.readLine())!= null)
			{
				System.out.println(s);
			}
		} catch (Exception e) {
			// TODO: handle exception
		}

  

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM