1. 程式人生 > >Java高階視訊_IO輸入與輸出(一)

Java高階視訊_IO輸入與輸出(一)

一、其它物件

01、Systeam

/*
Systeam:類中的方法和屬性都是靜態的。
out:標準輸出,預設是控制檯。
in:標準輸入,預設是鍵盤。

描述系統一些資訊。

獲取系統屬性資訊:Properties getProperties();
*/
import java.util.*;
class SystemDemo 
{
	public static void main(String[] args) 
	{
		//獲取系統屬性資訊
		Properties prop = System.getProperties(); 
		
		//如何在系統中自定義資訊
		System.setProperty("mykey","myvalue");

		//獲取指定屬性資訊。
        String value = System.getProperty("os.name");

		System.out.println("value="+value);

        //可不可以在jvm啟動時,動態載入一些屬性資訊呢?
		String v = System.getProperty("haha");

		System.out.println("v="+v);
		/*
		//獲取所有資訊
		for(Object obj : prop.keySet())
		{
			String value = (String)prop.get(obj);
            System.out.println(obj+"::"+value);
		}
		*/
	}
}

02、Runtime

/*
Runtime物件
該類並沒有提供建構函式。
說明不可以new物件。那麼會直接想該類中的方法都是靜態的。
發現該類中還有非靜態方法。
說明該類肯定會提供了方法獲取本類物件,而且該方法是靜態的,並返回值型別為本類型別。

由特點可以看出該類使用了單例設計模式完成。

該方式是static Ruuntime getRuntime();
*/
class  RuntimeDemo
{
	public static void main(String[] args) throws Exception
	{
		Runtime r = Runtime.getRuntime();
		
		//呼叫一個系統可執行檔案
		//Process P = r.exec("C:\\Program Files\\foobar2000\\foobar2000.exe");
		Process P = r.exec("notepad.exe F:\\java\\11\\RuntimeDemo.java");
		
        Thread.sleep(4000);//4秒後執行
		P.destroy();
		//System.out.println("Hello World!");
	}
}
3、

03、Date (日期類)

import java.util.*;
import java.text.*;
class DateDemo 
{
	public static void main(String[] args) 
	{
		Date d = new Date();
		System.out.println(d);//列印的時間看不懂,希望有格式。

		//將模式封裝到SimpleDateformat物件中。
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日星期E hh:mm:ss");
		
		//呼叫format方法讓模式格式化指定Date物件。
		String time = sdf.format(d);

		System.out.println("time="+time);
	}
}

04、Calendar(日曆)

import java.util.*;
import java.text.*;

class CalendarDemo 
{
	public static void main(String[] args) 
	{
		xin();
		
	}
	public static void xin()//新方法
	{
		Calendar c = Calendar.getInstance();
		sop(c.get(Calendar.YEAR)+"年");
		sop((c.get(Calendar.MONTH)+1)+"月");
		sop(c.get(Calendar.DAY_OF_MONTH)+"日");
		sop("星期"+c.get(Calendar.DAY_OF_WEEK));
	}
	public static void jiu()//舊方法
	{
		Date d = new Date();

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy");

		String year=sdf.format(d);
		sop(year);
	}
	public static void sop(Object obj)
	{
        System.out.println(obj);
	}
}

二、資料類

01、Math-Random(隨機數)

import java.util.*;

class MathDemo 
{
	public static void main(String[] args) 
	{
		Random r = new Random();
		for(int x=0;x<10;x++)
		{
			double d = r.nextInt(10)+1;
			sop(d);
		}
	}

	public static void show()
	{
	    double d = Math.ceil(16.34);//ceil返回大於指定資料的最小整數
		double d1 = Math.floor(12.34);//floor返回小於指定資料的最大整數

		long l = Math.round(12.54);//四捨五入
		sop("d="+d);
		sop("d1="+d1);
		sop("l="+l);

		double d2 = Math.pow(2,3);
	}

	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}

三、IO(Input/Output)流

01、概述

(1)IO流用來處理裝置之間的資料傳輸。

(2)Java對資料的操作是通過流的方式。

(3)Java用於操作流的物件都在IO包中。

(4)流按操作資料分為兩種:位元組流與字元流。

(5)流按流向分為:輸入流,輸出流。

02、IO流常用基類

(1)位元組流的抽象基類:

InputStream,OutputStream。

(2)字元流的抽象基類:

Reader,Writer。

(3)注:由這四個類派生出來的子類名稱都是以其父類名的字尾。

——如:InputStream的子類FileinputStream。

——如:Reader的子類FileReader

(4)例子

/*
需求:在硬碟上,建立一個檔案並寫入一些文字資料。

找到一個專門用於操作檔案的Writer 子類物件。FileWriter。字尾名是父類名。字首是該流物件的功能。
*/
import java.io.*;
class FileWriterDemo 
{
	public static void main(String[] args) throws IOException
	{
		//建立一個FileWriter物件。該物件一被初始化就必須要明確被操作的檔案。
		//而且該檔案會被建立到指定目錄下。如果該目錄下已有同名檔案,將被覆蓋。
		//其實該步就是在明確資料要存放的目的地。
		FileWriter fw = new FileWriter("demo.txt");

		//呼叫 write 方法,將字串寫入到流中。
		fw.write("wsdfewfew");

		//重新整理流物件中的緩衝中的資料。
		//將資料刷到達目的地中。
		//fw.fluch();
		
		//關閉流資源,但是關閉之前會重新整理一次內部的緩衝的資料。
		//將資料刷到目的地中。
		//和flush區別:flush重新整理後,流可以繼續使用,close重新整理後,會將關閉。
		fw.close();
	}
}

03、IO異常處理方式

import java.io.*;
class FileWriterDemo2 
{
	public static void main(String[] args) 
	{
		FileWriter fw = null;
		try
		{
			//異常:目錄不存在
			fw = new FileWriter("demo.txt");//建立寫入流物件

			//異常:記憶體已滿
			fw.write("sdkjfjewoifwe");//執行寫入操作
		}
		catch (IOException e)
		{
			System.out.println("carch"+e.toString());
		}
		finally 
		{
			try
			{
				//異常:沒有成功建立寫入流物件
				if(fw!=null)
					fw.close();
			}
			catch (IOException e)
			{
                System.out.println(e.toString());
			}
		}
		
	}
}

04、檔案的續寫

/*
演示對已有檔案的資料續寫
*/
import java.io.*;
class FileWriterDemo3
{
	public static void main(String[] args) 
	{
		FileWriter fw = null;
		try
		{
			//異常:目錄不存在
			//fw = new FileWriter("demo.txt",true);//建立寫入流物件
            fw = new FileWriter("demo.txt",true);//建立寫入流物件,檔案末尾寫入資料
			//異常:記憶體已滿
			fw.write("sdkjfjewoifwe");//執行寫入操作
		}
		catch (IOException e)
		{
			System.out.println("carch"+e.toString());
		}
		finally 
		{
			try
			{
				//異常:沒有成功建立寫入流物件
				if(fw!=null)
					fw.close();
			}
			catch (IOException e)
			{
                System.out.println(e.toString());
			}
		}
		
	}
}

05、檔案的讀取方式

(1)一個個位元組的讀取
import java.io.*;
class  FileReaderDemo
{
	public static void main(String[] args) throws IOException
	{
		//建立一個讀取流物件,和指定名稱的檔案相關聯。
		//要保證該檔案是已經存在的,如果不存在,會發生異常FileNotFoundException
		FileReader fr = new FileReader("demo.txt");

		//呼叫讀取流物件的read方法。
        //read():一次讀一個字元,返回的是int型別,而且會自動往下讀,讀到結尾為-1.
		
		int ch = 0;

		while ((ch=fr.read())!=-1)
		{
			System.out.println("ch="+(char)ch);
		}
		/*
		while(true)
		{
			int ch = fr.read();
			if(ch==-1)
				break;
            System.out.println("ch="+(char)ch);
		}*/
		
		fr.close();
	}
}

(2)通過字元陣列進行讀取。

import java.io.*;
class  FileReaderDemo2
{
	public static void main(String[] args) throws IOException
	{
		FileReader fr = new FileReader("demo.txt");

		//定義一個字元陣列。用於儲存讀到字元。
		//該read(char[])返回的是讀到字元個數。
		char[] buf = new char[1024];

        int num = 0;
		while((num = fr.read(buf))!=-1)
		{
            System.out.print(new String(buf,0,num));
		}		
		
		fr.close();
	}
}

06、檔案的複製

//將C盤一個文字檔案複製到D盤。
/*
復現的原理
其實就是將C盤下的檔案資料儲存到D盤的一個檔案中。

步驟:
1,在D盤建立一個檔案。用於儲存Ctel檔案中的資料。
2,定義讀取流和C盤檔案關聯。
3,通過不斷的讀寫完成資料儲存。
*/

import java.io.*;
class  CopyText
{
	public static void main(String[] args) throws IOException
	{
		Copy_1();
		Copy_2();
	}
    
	//從一個讀一個字元,就往另一個寫一個字元。
	public static void Copy_1()
	{
		FileWriter fw = null;
		FileReader fr = null;

		
        try
        { 
			fw = new FileWriter("C:\\0663_1.txt");
            fr = new FileReader("C:\\0663.txt");

			int ch = 0;
        	while ((ch = fr.read())!=-1)
		    {
			     fw.write(ch);
		    }
        }
        catch (IOException e)
        {
			throw new RuntimeException("讀寫失敗!");
        }
		finally
		{
			try
			{
				if(fr!=null)
				fw.close();
			}
			catch (IOException e)
			{
                throw new RuntimeException("讀取關閉失敗!");
			}
			try
			{
				if(fw!=null)
				fr.close();
			}
			catch (IOException e)
			{
				throw new RuntimeException("寫入關閉失敗!");
			}
		    
		}

		

	}
   //從一個讀一個字元陣列,就往另一個寫一個字元陣列。
	public static void Copy_2()
	{
		FileWriter fw = null;
		FileReader fr = null;
		try
		{
			fw = new FileWriter("C:\\0663_2.txt");
            fr = new FileReader("C:\\0663.txt");

			char[] ch = new char[1024];

		    int num=0;        
		    while ((num = fr.read(ch))!=-1)
		    {
			    fw.write(ch,0,num);
		    }
		} 
		catch (IOException e)
        {
			throw new RuntimeException("讀寫失敗!");
        }
		finally
		{
			try
			{
				if(fr!=null)
				fw.close();
			}
			catch (IOException e)
			{
                throw new RuntimeException("讀取關閉失敗!");
			}
			try
			{
				if(fw!=null)
				fr.close();
			}
			catch (IOException e)
			{
				throw new RuntimeException("寫入關閉失敗!");
			}
		
		
		}
	}
}






相關推薦

Java高階視訊_IO輸入輸出

一、其它物件 01、Systeam /* Systeam:類中的方法和屬性都是靜態的。 out:標準輸出,預設是控制檯。 in:標準輸入,預設是鍵盤。 描述系統一些資訊。 獲取系統屬性資訊:Properties getProperties(); */ import j

Java高階視訊_IO輸入輸出

四、File類 01、概述 (1)    用來將檔案或者資料夾封裝成物件 (2)    方便對檔案與資料夾進行操作 (3)    File物件可以作為引數傳遞給流的建構函式 02、File類的常見方法 (1)建立。 — Boolean createNweFile();在指定

黑馬程式設計師 —— Java高階視訊_IO輸入輸出第十八天1

------- android培訓、java培訓、期待與您交流! ---------- 一  其它物件 -  System 現在來看一下一些其他類是如何使用的。 比起了解這些類的方法怎麼使用,在這幾節學習過程中, 更重要的是要掌握如何通過查閱API文件實現功能。 1

黑馬程式設計師 —— Java高階視訊_IO輸入輸出第十九天2

------- android培訓、java培訓、期待與您交流! ---------- 十八    流操作規律1 上面學習瞭如果之多的流(其實後面的章節還有不少),那麼到底應該如何確定什麼情況用什麼流呢? 關鍵是要掌握了流操作的基本規律,掌握了規律操作起來就容易了

JAVA高階視訊_IO輸入輸出_收穫四

java 高階視訊教程 02——11.swf——15.swf 包裝類的概念與作用 java的資料型別有:原始資料型別跟引用資料型別; 包裝類的作用就是將原始資料型別轉換成引用資料型別 ——就是將原始資料型別當作物件進行操作。 輸出包裝類順序:程式——包裝流類——節點流類—

JAVA高階視訊_IO輸入輸出 ObjectInputStream和ObjectOutputStream類 學習筆記

這兩個包裝類用於從底層輸入流中讀取物件型的資料和將物件型的資料寫到底層輸出流,只要將物件的所有的成員變數都儲存起來,就等於儲存了這個物件,只要將原來儲存的成員變數讀取出來儲存在物件中,就等於讀取到了一個物件,這兩個包裝類讀寫的物件必須是實現了serializable介面的物件

JAVA高階視訊_IO輸入輸出_RandomAccessFile類_筆記

概念: 1.RandomAccessFile類 提供了 眾多(最多)的 檔案 訪問 方法; 2.RandomAccessFile類 支援 “隨機訪問” 方式;//不好畫圖,類似於vector和iterator方式或者陣列指標方式。指示器大概就跟迭代器一樣吧…… 3.RandomAccessFlie類 在隨

JAVA高階視訊_IO輸入輸出

import java.io.*; class CopyTextByBuf { public static void main(String[]args) { BufferedReader bufr = null; BufferedWriter bufw = null; try { bufr = new Bu

黑馬程式設計師——IO輸入輸出

--------------------- <a href="http://edu.csdn.net/heima" target="blank">android培訓</a>、<a href="http://edu.csdn.net/heima

輸入輸出初學者

1、資料輸入與輸出 (1)所謂輸入與輸出是以計算機為主題而言的。 (2)本部落格介紹的是向標準輸出裝置顯示器輸出資料的語句。 (3)在C語言中,所有資料輸入輸出都是由庫函式完成,因此都是函式語句。 (4)在使用C語言庫函式時,要用預編譯命令#include將有關“標頭檔案”包括到原始檔中。使用標準輸入

【 I/O流】檔案輸入輸出Scanner& Scanner和io流讀寫有何區別?(待填坑)

對檔案進行讀取,僅需要用File物件構造一個Scanner物件Scanner in= new Scanner(Paths.get("myfile.tet"),"UTF-8");如果檔名中含反斜槓符號,需要在每個反斜槓之前加一個額外的反斜槓如:“c:\\mydirectory\

java編碼解碼

  轉:https://blog.csdn.net/heyanxi0101/article/details/80356870 java編碼與解碼(一) 編碼表概述和常見的編碼表 概述:有字元及其對應的數值組成的一張表 常見的編碼表 ASCII:美國標準資訊交換表ISO8859-1:拉丁碼

輸入/輸出

File類 訪問檔案和目錄 不管是檔案還是目錄都是使用File來操作的,File能新建、刪除、重新命名檔案和目錄,File不能訪問檔案內容本身。如果需要訪問檔案內容本身,則需要使用輸入/輸出流。 File類提供了很多方法來操作檔案和目錄: 流的分類 1. 輸入流和輸出流

java ArrayList,HashMap, LinkedList的簡單概括分析

首先基本概況一下ArrayList,ArrayList本質上是一個集合,通過動態的擴充集合,解決了普通集合的容量問題,其次是HashMap,HashMap本質上將一個值對鍵放入一個由陣列與連結串列組成的特殊結構,解決通過key查詢值的問題,最後是LinkedLi

Java資料結構演算法

一、學習資料結構與演算法的目的         預估程式在大量的資料集上執行時需要的時間成本和空間成本。 二、遞迴簡介          遞迴的四條基本法則:         一個簡單的遞迴案例:  三、實現泛型特性構建 pre-java5 1.引入泛

Java多執行緒併發

多執行緒與併發的基礎問題 併發就是指程式同時處理多個任務的能力(一個程式被多個使用者訪問都能看到自己預期的結果) 併發的根源在於對多工情況下訪問資源的有效控制! 併發背後的問題 public class DownloadSimple {

YAML的Java實現——JYAML基本原理示例1匯出資料為YAML格式檔案

1. Overview JYAML是YAML的Java實現,YAML的全稱是YAML Ain't Markup Language,是否定遞迴定義,和LINUX的Linux Is Not UniX是一個意思。其結構之簡單,常常成為匯出或匯入配置檔案、資料結構等應用場景的常用A

Java物件

本文為博主原創文章,更多內容點此訪問 類與物件的概念 類是具有一組相同屬性和方法的物件的集合,它是一個模板 物件是類的具體例項化的一個個客觀存在的實體 類是物件的抽象,物件是類的實體 類的基本結構 許可權修飾符 class 類名{

JAVA中的基礎-----過載重寫覆蓋的區別:overloadoverride

JAVA中多型的實現機制主要通過overload和override實現。 1)方法的過載:簡言之,就是指同一個類有多個同名的方法,這些方法擁有不同的引數(同名不同參)。可以認為是類中方法的多型性,也稱為編譯時多型。 2)方法的重寫(覆蓋):子類可覆蓋父類的方法,已達到“個性

YAML的Java實現——JYAML基本原理示例3YAML對檔案流的處理

請您先閱讀: 1. FileOutputStream 以流的方式,將資料寫入到YAML檔案中。 /* Output data structure into a YAML file as a