[Java]讀取InputRead及寫入OutputWrite檔案File

Input及Output也就是IO的存取上,不只有Console輸出、鍵盤輸入這種組合,很常用的還有檔案的讀取及寫入,Java在讀取及寫入檔案上可大略分成二部份,Binary元位組IO及純文字的IO。

常用的class均屬於java.io這個package裡,以下圖表是讀取File檔時可用的相關類別。其相關的api說明可以參考Oracle sun JDK api

JavaIO以行為來分的話,可分成輸出模組及輸入模組,輸出模組像是寫入檔案、輸出至Console,而輸入模組像是讀取檔案、鍵盤輸入等。在類別名稱上可以很清楚的判別,含有字詞Input或Reader就是輸入模組,而含有字詞Output或Writer就是輸出模組。

Java讀取檔案

Read More

[Java]基本IO輸出Output及輸入Input-Console

Java的輸出及輸入控制大都定義在java.io.*裡,像是檔案File的讀寫,週邊設備RS232、LPT等的輸出與輸入都需要到Java IO。而Java IO大概分成二大類,一類是byte的讀取與寫出,可讀取寫入二位元binary的資料,而另一個是char的讀取與寫入,提供文字的讀取與寫入。

System類別並不屬於java.io的套件,而是屬於java.lang套件,在使用時預設載入,所以並不需要特別去import它。

  • System.in 通常是指鍵盤的輸入,為java.io.InputStream類別
  • System.out 通常是指Console螢幕輸出,為java.io.PrintStream類別
  • System.err 同System.out,主要是用在系統出錯時輸出至Console螢幕

註:Java本身在處理字串時均是使用utf8 uncode的方式,不過在Windows的Console(螢幕)字串的顯示與輸入都是使用ISO-8859-1編碼,所以需要先把字串轉換成Big5再行輸出,在Linux上則不會有這種問題。

System.out

  • System.out.println(內容):輸出”內容”加上”斷行\r\n”至Console(螢幕)
  • System.out.print(內容):輸出”內容”至Console(螢幕)

如果要輸出的內容需要有字串、文字、日期等,可以利用字串的連接+來把字串串連起來進行輸出。ex.”中文”+123

如果需要自行做斷行,可以使用\r\n來做換行動作。ex.System.out.print(“中文\r\n我換行了”);

Out.png

Read More

[Java]JButton按鈕透明背景

要做swing套件的JButton透明背景有幾種方式,像是利用html-tag的background背景來設定、或是使用JLabel來e承載Image然後add至JButton裡等,不過使用JLabel的方式需要做些技巧才會有透明背景的效果出來。

使用html-tag的方式需要實際存在硬碟裡的圖檔,所以需要在使用前先Resize一份存到硬碟裡,而JLabel的方式則可直接Resize存在記憶體使用,使用的時機及優缺點都需要考量。

如果只是想單純在JButton裡加入圖片,那直接使用function setIcon會比較方便。

註:以下所有範例圖,均只有一個按鈕,會分成外框及內框,圖片需使用支援透明背景及去好背的圖,如png或gif。

下圖是setText使用html-tag設定body的background,會自動延展背景,所以如果只想出現一張背景圖時,圖的長寛與按鈕就需要控制好。能控制的範圍為內框裡,外框部份就不會延展背景圖了。

HtmlButton1.png

Read More

[Java]簡單的排程Schedule程式

之前主機一直被強迫斷線,而且設定了自動ADSL重撥都沒作用,應該是程式被強迫關閉了,所以重撥功能也才沒做用,本來想利用Windows排程,定時一直自動重撥ADSL,不過重撥後還要把ICS Bind DNS Server重啟才有作用,所以簡單的規畫了一個程式,可以設定在Windows排程式,開機後執行,而我是設定在ADSL自動撥號及DNS啟動後執行(一個command檔)。

程式功能很簡單,主要在啟動時把需要排程執行的thread class全都載入及執行,而定時的部份在每一個thread class裡,利用sleep來間隔執行,不過這會有執行內容時間上的問題,程式還有很多需要改進的地方,像是讀取外部檔來設定排程、排程中斷等目前都還沒加入,等有空時再慢慢增加。

Java排程程式

測試ADSL是否斷線是利用執行command指令ipconfig /all 來取得default gateway是否存在著ip位置,如果不存在則執行command 來啟動撥號ADSL,並重啟ICS Bind DNS Server,設定時間是30分鐘檢查一次。不過這是我的環境,需要的人可能要修改些地方。

程式碼如下:

Read More

[ExtJS]使用PHP上傳檔案圖片-WYSIWYG所視即所得網頁編輯器外掛 with CKEditor

這個範例是跟據之前的ExtJS-CKEditor上傳檔案及圖片使用jsp的方法改寫的,裡面可能有需多jsp的概念存在,不過在php上傳時是沒有問題的,不同於jsp範例,此處直require_once設定檔進來,而不使用讀取外部設定檔的方式。在使用上要修改CKConfig三個上傳參數,指定正確的url路徑。

                    filebrowserUploadUrl : 'CKEditorUpload.php?Type=File',   
                    filebrowserImageUploadUrl : 'CKEditorUpload.php?Type=Image',   
                    filebrowserFlashUploadUrl : 'CKEditorUpload.php?Type=Flash',

詳細的說明請參考[ExtJS]WYSIWYG所視即所得網頁編輯器外掛 with CKEditor

ExtJS外掛CKEditor使用PHP上傳檔案或圖片

Read More