📄 tcubaseitemsstr.java
字号:
package com.jr81.source.stream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;
import com.jr81.common.JrUtility;
public class TcuBaseItemsSTR extends Object {
//private Map Items = new HashMap();
private Vector Items = new Vector();
private int Size=0;
public void Clear() {
for (int i=0;i<GetCount();i++){
Item(i).Clear();
}
Items.clear();
Size=0;
}
public void AddItem(TcuBaseItemSTR value) {
Items.add(value);
Size+=value.getSize();
}
public void AddItem(String name,String value) {
/*TcuBaseItemSTR BaseItem = new TcuBaseItemSTR();
BaseItem.setName(name.getBytes());
BaseItem.setValue(value.getBytes());
BaseItem.setItemTag(0);
AddItem(BaseItem);*/
if (value==null){
AddItem(name,new String("").getBytes(),0);
}else{
AddItem(name,value.getBytes(),0);
}
}
public void AddItem(String name,boolean value) {
if (value){
AddItem(name,"1".getBytes(),0);
}
else{
AddItem(name,"0".getBytes(),0);
}
}
public void AddItem(String name,Integer value) {
AddItem(name,value.toString().getBytes(),0);
}
public void AddItem(String name,Float value) {
AddItem(name,value.toString().getBytes(),0);
}
public void AddItem(String name,byte[] value,int ItemTag) {
TcuBaseItemSTR BaseItem = new TcuBaseItemSTR();
BaseItem.setName(name.getBytes());
BaseItem.setValue(value);
BaseItem.setItemTag(ItemTag);
AddItem(BaseItem);
}
public TcuBaseItemSTR Item(String name) {
for(int i=0;i<Items.size();i++){
String Name=new String(Item(i).getName());
//if (Item(i).getName().equals(name.getBytes())){
if (Name.toUpperCase().equals(name.toUpperCase())){
return Item(i);
}
}
return null;
}
public TcuBaseItemSTR Item(int index) {
return (TcuBaseItemSTR) Items.elementAt(index);
}
public String GetItem(String name){
TcuBaseItemSTR it= Item(name);
if (it==null){
return "";
}
String value=new String( Item(name).getValue());
if (value.length()>0){
return value;
}
else
return "";
}
public String GetItem(int index){
String value=new String( Item(index).getValue());
if (value.length()>0){
return value;
}
else
return "";
}
public byte[] GetItemByteArray(String name){
TcuBaseItemSTR it= Item(name);
if (it==null){
return null;
}
else{
return it.getValue();
}
}
public boolean GetItemToBoolean(String name){
if (GetItem(name).equals("1")){
return true;
}
else
return false;
}
public Integer GetItemToInteger(String name){
String value=GetItem(name);
if (value.length()==0){
return Integer.valueOf(0);
}else{
return Integer.valueOf(value);
}
}
public Float GetItemToFloat(String name){
String value=GetItem(name);
if (value.length()==0){
return Float.valueOf(0);
}else{
return Float.valueOf(value);
}
}
public int GetCount() {
return Items.size();
}
public boolean DelItem(int value) {
// TODO 自动生成方法存根
Size=Size-((TcuBaseItemSTR) Item(value)).getSize();
Items.remove(value);
return true;
}
public ByteArrayOutputStream toStream() throws IOException {
ByteArrayOutputStream result=new ByteArrayOutputStream(Size+4*GetCount()+4);
byte[] inLength = new byte[4];
///写入ItemsCount
inLength = JrUtility.int2bytes(GetCount());
result.write(inLength,0,4);
for(int i=0;i<Items.size();i++){
TcuBaseItemSTR BaseItem = (TcuBaseItemSTR)Item(i);
//写入ItemSize
inLength = JrUtility.int2bytes(BaseItem.getSize());
result.write(inLength,0,4);
//写入Item内容
//result.write(((ByteArrayOutputStream) BaseItem.toStream()).toByteArray(),0,BaseItem.getSize());
result.write(BaseItem.toByteArray(),0,BaseItem.getSize());
}
return result;
}
public byte[] toByteArray() throws IOException{
ByteArrayOutputStream ou=toStream();
try{
return ou.toByteArray();
}finally{
ou.close();
ou=null;
//System.gc();
}
//return ba;
//return ((ByteArrayOutputStream)toStream()).toByteArray();
}
public boolean fromStream(InputStream value){
try{
if (value==null){
System.out.println("BaseItems fromStream error,Null bytearray");
return false;
}
Clear();
byte[] inLength = new byte[4];
int size=0;
value.read(inLength,0,4);
int count = JrUtility.bytes2int(inLength);
for (int i=0;i<count;i++){
value.read(inLength,0,4);
size = JrUtility.bytes2int(inLength);
byte[] buffer = new byte[size];
value.read(buffer,0,size);
//ByteArrayInputStream in=new ByteArrayInputStream(buffer);
TcuBaseItemSTR BaseItem =new TcuBaseItemSTR ();
//BaseItem.fromStream(in);
BaseItem.fromByteArray(buffer);
AddItem(BaseItem);
}
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}
public boolean fromByteArray(byte[] value) throws IOException{
if (value==null){
System.out.println("BaseItems fromByteArray error,Null bytearray");
return false;
}
ByteArrayInputStream in=new ByteArrayInputStream(value);
try{
return fromStream(in);
}
finally
{
in.close();
in=null;
//System.gc();
}
}
public void Assign(TcuBaseItemsSTR value) {
Clear();
for (int i=0;i<value.GetCount();i++){
//TcuBaseItemXML BaseItem = (TcuBaseItemXML)iterator.next();
TcuBaseItemSTR item=new TcuBaseItemSTR();
//TcuBaseItemSTR it=value.Item(i);
item.Assign(value.Item(i));
AddItem(item);
}
}
public static void main(String[] args) throws IOException {
TcuBaseItemsSTR BaseItems = new TcuBaseItemsSTR();
TcuBaseItemsSTR BaseItems2 = new TcuBaseItemsSTR();
/*TcuBaseItem BaseItem = new TcuBaseItem();
BaseItem.setName("dd");
BaseItem.setValue("d1");
BaseItems.AddItem(BaseItem);*/
BaseItems.AddItem("aaa","aaaa");
BaseItems.AddItem("bbb","bbbb");
ByteArrayOutputStream out=(ByteArrayOutputStream) BaseItems.toStream();
FileOutputStream fou=new FileOutputStream("C:\\test.txt");
fou.write(out.toByteArray());
ByteArrayInputStream in=new ByteArrayInputStream(out.toByteArray());
BaseItems2.fromStream(in);
BaseItems2.AddItem("ccc","cccc");
ByteArrayOutputStream out2=(ByteArrayOutputStream) BaseItems2.toStream();
FileOutputStream fou2=new FileOutputStream("C:\\test2.txt");
fou2.write(out2.toByteArray());
System.out.println(BaseItems2.GetItem("AAA"));
//BaseItems.toStream()
/*String test=BaseItems.toString();
PrintStream out = System.out;
out.println(test);
String XMLHead="<?xml version='1.0' encoding = 'GB2312'?>";
BaseItems2.fromString(XMLHead+"<aaaaa>"+test+"</aaaaa>");
BaseItems2.AddItem("ccc","ccc");
out.println(BaseItems2.toString());*/
}
/**
* @return 返回 size。
*/
public int getSize() {
return Size;
}
/**
* @param size 要设置的 size。
*/
public void setSize(int size) {
Size = size;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -