Archive

文章標籤 ‘Java’

Java OutputStream 轉換為InputStream

2008年8月19日 尚無評論

   先前有提到在開發時常會將String 轉成InputStream或都反之將InputStream轉String,其實還有一種也很常轉換就是將OutputStrem轉成成InputStream,一般是要傳出到其它媒介,如檔案時,可以再接進來做preview的動作,轉換很簡單,以下提供二種方式。

1.

ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()) ;

2.這種轉換使用Pipe就最合適了,使用方式也是很單純

PipedOutputStream out = new PipedOutputStream();
PipedInputStream in = new PipedInputStream(out);

   當然除了OutputStrem轉成成InputStream,也可以反轉,以前還不太懂Stream時(現在還是不太懂 =.=||),總想半天為啥java搞的這麼複雜,現在稍為能體會Stream好處了!!

參考資訊:
http://blog.csdn.net/jimmyblyLee/archive/2007/08/20/1750939.aspx

Categories: JAVA Tags: , ,

String 如何轉換成 InputStream?

2008年8月8日 尚無評論

JAVA 在IO 上提供了串流介面讓程式設計師在進行各種輸出入時,變的簡單容易了,
不過在開發中會用到字串的機制大於其它如檔案等,所以在小弟看來
常有可能要將String轉換成InputStream,不過也蠻怪的,一些OpenSource元件或JDK本身提供的
都沒有直接傳入String,不知是不是小弟的觀念不正確~哈 =.=

不過,在小弟看來真的還蠻常遇到這種轉換,所以就加減瞭解一下吧!!
以下提供了String及InputStream互轉的方式,不過要注意一下
因為轉成Byte所以有可能會有中文問題

  public InputStream string2InputStream(String str) throws UnsupportedEncodingException…{
       ByteArrayInputStream bais = new ByteArrayInputStream(str.getBytes());
       return bais;
  }

  public String inputStream2String(InputStream is) throws IOException…{
       byte[] buffer = new byte[is.available()];
       is.read(buffer);
       return new String(buffer);
  }

參考資料:
http://blog.csdn.net/flyforlove/archive/2007/05/16/1611708.aspx

Categories: JAVA Tags: ,

用JAVA如何取得磁碟空間 for JDK6 (How to check Disk Space)?

2008年8月7日 尚無評論

     以往如果要取得磁碟資訊,就要自己半人工方式透過作業系統查詢磁碟的方式
例如linux平台就可以用df 指令,Windows平台就要使用dir指令
透過JNI的方式使用Runtime.getRuntime().exec() 來執行這些作業系統的指令再去解析
其中我們想要的資訊,如大家有興趣可以參考以下兩篇:


不過在JDK6出來後,就省事多啦,File元件已經提供相關的功能可以達到上述功能
我們來看看

java.io.File;

File file = new File(“c:”);
//取得C:\ 的總total空間
file.getTotalSpace();
//取得剩餘空間
file.getFreeSpace();
//取得已使用的空間
file.getUsableSpace();

上述幾個method就可以找到你想要的資訊,簡單吧!!

參考資訊:
http://java4ever.blogspot.com/2008/06/disk-space-check.html

Categories: JAVA Tags: ,

Java 透過JDBC 連Mysql 的Date 型態出現 Value '0000-00-00' can not be represented as java.sql.Date 解法

2008年7月22日 尚無評論

最近在try 時發現Date 型態如果default not null 那存入default value 會為'0000-00-00'
但在JAVA 透過JDBC取得data 時會出現以下錯誤訊息

Caused by: java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date

我想問題是出現因為 java.sql.Date: since January 1, 1970 00:00:00.000 GMT 所以無法解析轉換吧!!

找了一下解法,在http://twpug.net/docs/mysql-5.1/connectors.html 這篇文章有提到

具有全0組分的Datetimes(0000-00-00 …):在Java中,無法可靠地資料表示這些值。從結果集讀取它們時,Connector/J 3.0.x總是會將其轉換為NULL。

預設情況下,遇到這類值時,Connector/J 3.1將拋出異常,這是因為,根據JDBC和SQL標準,這是最正確的行為方式。可以使用「zeroDateTimeBehavior」配置屬性改變該行為。允許的值包括:「exception」,(預設值),用代碼為「S1009」的SQLState拋出SQLException;「convertToNull」,返回NULL而不是數據;以及「round」,對日期進行捨入處理,使之成為最接近的值,即「0001-01-01」。

從Connector/J 3.1.7開始,能夠使用「noDatetimeStringSync=true」(預設值為「假」),將ResultSet.getString()與該行為分離開,從而能夠以字串的形式提取未被改變的全0值。請注意,這也會阻止使用任何時區轉換功能,因此,驅動程式將禁止同時啟用noDatetimeStringSync和useTimezone。

所以在連線參數加上zeroDateTimeBehavior=convertToNull&noDatetimeStringSync=true就可以排除啦!!

參考資料來源:http://twpug.net/docs/mysql-5.1/connectors.html

Categories: JAVA Tags: , ,

Java Session 監控

2008年5月20日 尚無評論

好幾年前寫過線上人數,當初用JSP寫 似乎 沒遇到多大的問題
最近,碰到需要檢測帳號只能同時一個在線上,才遇到了一些問題
一般有了問題才會深入,才更瞭解session的監控原理及模式
唉~~這就是所謂的半調子呀!

Session表示使用者連到系統的請求暫存記錄,每個使用者(瀏覽器)連至系統時,系統會自動給予一組Session ID去辨別這個使用者
而有些連結的資訊就會透過這組session id保留在主機,以便使用者連線使用。

在java Servlet實作session時,可透過監聽session 建立及結束當被觸發時以進行初始化及還原的動作
只要implements HttpSessionListener並實作 sessionCreated 及 sessionDestroyed method即可

或是可以針對session傳出傳入值時進行監聽,如此一來即可在傳入的時候(即使用用HttpSession的setAttribute方法時)
以及移除的時候(即使用用HttpSession的removeAttribute方法或session time out時)觸發valueBound和valueUnbound方法

只要在傳入的object implements HttpSessionBindingListener 並實作valueBound和valueUnbound 即可
這樣就可以在上述提到的時機點觸發相關的方法

因此,我們就可以利用上述特性進行客戶的日誌記錄或上線人數的統計等
而再一提的,如果要做到上線人數的統計或是像我這次記錄使用者只能一組在線上
就還要再使用一個全域的system session,在JSP是叫application (顧名思義就是整個WEB應用系統都可以使用的session)
而在Servlet,可以從session或request 取出ServletContext
(這個等同於jsp的application,有關ServletContext的敘述請參考Servlet規範),
如此就可以利用ServletContext的全局特性,去記錄和整個系統有關的資訊了!!

參考資料:Servlet中如何捕獲Session事件–MaYong – 希賽IT博客,中國最大的IT專業博客

Categories: JAVA Tags: , ,
分頁: 上一頁 1 2 3 4 5 下一頁