2008年7月28日 星期一

[Java] BufferedReader 和 BufferedWriter 使用方法

import java.io.BufferedReader;
import java.io.BufferedWriter;


Reader rd = new FileReader("abc.txt");
Writer wt = new FileWriter("def.txt");


BufferedReader br = new BufferedReader(rd);
BufferedWriter bw = new BufferedWriter(wt);
String line = null;

while((line = br.readLine()) !=null){
//BufferedWriter user next two line
bw.write(line);
bw.newLine();
System.out.println(line);
}
br.close();

[Java] BufferedReader 和 PrintWriter 使用方法

import java.io.BufferedReader;
import java.io.PrintWriter;

利用FileReader把檔案取出,用PrintWriter寫到另一個檔案中
Reader rd = new FileReader("abc.txt");
Writer wt = new FileWriter("def.txt");

通常都以BufferedReader搭配PrintWriter的方式
BufferedReader是以逐行讀出的方式,一行一行讀出abc.txt 中的內容

BufferedReader br = new BufferedReader(rd);
PrintWriter pw = new PrintWriter(wt);
String line = null;

while((line = br.readLine()) !=null){
  //PrintWriter user next line(usually use this)
  pw.println();
  System.out.println(line);
}
br.close();

[Java] Java I / O 介紹

輸入:
InputStream、Reader
  InputStream:用來讀取位元組資料
  Reader用來讀取字元資料
輸出:
OutputStream、Writer
  InputStream:用來寫出位元組資料
  Reader用來寫出字元資料

常用類別
讀/寫位元:FileInputStream / FileOutputStream
讀/寫字元:FileReader / FileWriter
讀/寫一列文字資料:BufferedReader / BufferedWriter
讀/寫基本型態資料:DataInputStream / DataOutputStream
讀/寫物件:ObjectInputStream / ObjectOutputStream

2008年7月27日 星期日

[Java] FileInputStream 和 FileOutputStream 用法

import java.io.FileInputStream;
import java.io.FileOutputStream;

InputStream is = new FileInputStream("abc.txt");
OutputStream os = new FileOutputStream("def.txt");

int n = 0,total=0;

byte[] ba = new byte[1024];
while ((n = is.read(ba)) != -1){
  os.write(ba, 0, n);
   total+=n;
}
System.out.println("共有" + total + "位元組");

[Java] FileReader 和 FileWrite 用法

import java.io.FileReader;
import java.io.FileWriter;

Reader rd = new FileReader("abc.txt");
Writer wt = new FileWriter("def.txt");

char[] ca = new char[1024];

int n=0,total=0;
while((n = rd.read(ca)) != -1){
  wt.write(ca, 0, n);
  total += n;
}

System.out.println("共有" + total + "字元");

[Java] InputStreamReader 讀取字元

InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(ir);

上面這兩行可縮寫成下面這一行:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.in:代表的是鍵盤,程式會去讀使用者在鍵盤所打的字元
下面程式碼範例為,讀取從鍵盤上,所輸入的字元
String s = "";
while((s = br.readLine())!= null ){
  System.out.print("input : "+ s);
}
br.close();

[Java] 例外處理 try-catch-finally

try {// 這是 try block
  // 可能發生錯誤的 statement
}catch ( NullPointerException ) { // 這是相對應錯誤的處理程式
  e.printStackTrace();
}finally {
 // 無論有發生例外或沒有發生例外 都會執行
}

2008年7月19日 星期六

[Java] 繼承(Inheritance)

子類別可以繼承父類別原來的某些定義,或針對不足的方法,增加方法,用extends的方式可以直接使用父類別的方法

2008年7月14日 星期一

[Java] String 的方法 toUpperCase() 和 toLowerCase()

轉換大小寫的方法
String a = "abcdef";
String b = "abcdef";
System.out.println(a.toUpperCase());
System.out.println(b.toLowerCase());

toUpperCase:小寫英文轉成大寫英文
toLowerCase:大寫英文轉成小寫英文

[Java] String 的方法 startsWith() 和 endsWith()

檢查是否以傳入的字串為開頭或結尾
String a = "abc.txt";
System.out.println(a.startsWith("abc"));
System.out.println(a.endsWith(".txt"));

startsWith():起始是不是以"abc"開頭,回傳blooean型態
endsWith():結束是不是以".txt"結尾,回傳blooean型態

空白字元

空白字元為 : nbps "&"後面加";"
小於符號"<" lt "&"後面加";" 大於符號">" gt "&"後面加";"

[Java] HashSet的用法

Set繼承collection介面,Set容器中的物件都是唯一
HashSet<Integer> hs = new HashSet<Integer>();

for(int i=0;i<6;i++){
   int num = (int)(Math.random()*42)+1;
   hs.add(num);
   System.out.print(num+", ");
}

System.out.println("\n");
for(int i : hs){
   System.out.print(i+", ");
}

輸出結果:
11, 38, 12, 28, 38, 5,
38, 5, 11, 12, 28,

因為有重複產生之數值,HashSet只會選擇無重複之值存在容器中

[Java] for 迴圈新的表示法(JDK 5.0)

通常的for寫法:
for(int i=0;i<5;i++){}
新的表示法
for(Type varName : listName){}
varName:代表list中的型態,String、int
listName:填入obj,型態例如:List、Array

2008年7月13日 星期日

[Java] Collection 類別介紹

Collection 稱為容器,表示裡面可以放物件,Collection包括了List和Set,List是可以接受排序、跟可重複的物件,Set剛好相反 ,不接受重複的物件,也具有排序的功能

List
ArrayList、LinkedList
Set
HashSet、TreeSet、EnumSet

  • 由一個物件來容納多個物件者稱為Collection,期內的物件稱為element
  • Collection介面
  • Set介面:element沒有順序 ,不允許重複的元素
  • List介面:element有順序 ,允許重複的元素

2008年7月12日 星期六

[Java] String 的方法 lastIndexOf()

String a = "abcdef"
int b = a.lastIndexOf("c");

回傳最後一次出現字串"c"的位置,回傳值為Int型態

[Java] String 的方法 indexOf()

String a = "abcdef"
int b = a.indexOf("c");
int b2 = a.indexOf(2);

b的結果為,搜尋字串a中是否有"c",有此字元,回傳數值為-1
b2的結果為,取出第二個位置的字元,值為2

[Java] String 的方法 substring()

String a = "abcdef";  //[0,1,2,3,4,5]
String b1 = a.substring(1);
String b2 = a.substring(1, 3);

a.substring(beginIndex) b的值為 "bcdef"
a.substring(beginIndex, endIndex)b2的值為 "bc" 1 為起始值 3 為起始結束值(不包含)

[Java] String 的方法 charAt()

String a = "abcdef";
char b = a.charAt(2);

回傳一個char型態,b的值等於 "c"

2008年7月9日 星期三

[Java] 三元運算子

if(x>0)
  ans=x;
else
  ans=-x

可以用以下方式寫
ans = (x > 0)?x:-x

2008年7月7日 星期一

[Eclipse] 產生Javadoc

如果是用UTF-8來編寫程式的話,額外的參數,不會有中文亂碼的產生
-encoding UTF-8 -charset UTF-8

2008年7月4日 星期五

[Java] 不可逆加密MD5

public static String MD5(String text){
String md5Text = "";
try {
  MessageDigest digest = MessageDigest.getInstance("MD5");
  md5Text = new BigInteger(1,digest.digest((text).getBytes()))
.toString(16);
} catch (Exception e) {
  System.out.println("Error in call to MD5");
}

if (md5Text.length() == 31) {
  md5Text = "0" + md5Text;
}
  return md5Text;
}

出處來自 Yahoo BBAuth 的開放碼

2008年7月3日 星期四

[Java] 讀取網頁中的文字 HttpURLConnection 和 URL

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.net.HttpURLConnection;
import java.net.URL;

以下是在接XML中方便接傳值的方法,首先設定要抓取的網頁位置
URL url = new URL("http://localhost/test.jsp");
用HttpURLConnection 開起
HttpURLConnection huc = (HttpURLConnection)url.openConnection();

InputStreamReader之後在寫使用方式
BufferedReader br = new BufferedReader(new InputStreamReader(huc.getInputStream(), "UTF-8"));

一樣用BufferedReader去讀回來

String str = "";
StringBuffer sb = new StringBuffer();
while(null != ((str=br.readLine()))) {
sb.append(str);
}
br.close();
String xmlResponse = sb.toString();

最後要記的關閉連結
br.close();
huc.disconnect();

[Java] 寫入文字到檔案中 FileWriter

取得要寫入文字的檔案
FileWriter fw = new FileWriter("G:/Counter.txt");
寫入字串"Num"
fw.write("Num");
fw.close()

[Java] 讀取檔案中的文字 FileReader

手動建立一個Counter.txt在第一行寫上"100",設定讀取檔案位置
FileReader fr = new FileReader("G:/Counter.txt");
用BufferedReader 讀取
BufferedReader br = new BufferedReader(fr);
String strNum = br.readLine(); //讀第一行

輸出
System.out.println(strNum);

要讀出全部可用while加StringBuffer來達成,改成讀出所有內容的程式碼
StringBuffer sb = new StringBuffer();
while ((strNum=br.readLine())!=null){
  sb.append(strNum);
}

輸出
System.out.println(sb.toString());