程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 基於C#完成Windows辦事狀況啟動和停滯辦事的辦法

基於C#完成Windows辦事狀況啟動和停滯辦事的辦法

編輯:C#入門知識

基於C#完成Windows辦事狀況啟動和停滯辦事的辦法。本站提示廣大學習愛好者:(基於C#完成Windows辦事狀況啟動和停滯辦事的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是基於C#完成Windows辦事狀況啟動和停滯辦事的辦法正文


1、為什麼要序列化?

-- 把內存中的java對象可以或許在磁盤上耐久保留

-- 經由過程收集傳輸對象

-- 經由過程RMI(Remote Method Invocation 長途進程挪用)傳輸。

經由過程序列化可以把對象轉化為與平台有關的二進制流,在從新應用進步行反序列化,從新轉化為java對象。

(長途進程挪用針對散布式Java運用,對開辟人員屏障分歧JVM和收集銜接等細節,是的散布在分歧JVM上的對象仿佛存在於一個同一的JVM中,可以或許便利的通信)

2、若何讓Java對象可以被序列化?

在java裡只需讓目的類完成Serializable接口,不必完成任何辦法。Serializable接口是一種標志接口,用來標明某個類可以被序列化。

3、若何應用序列化與反序列化?

序列化:應用ObjectOutputStream對象輸入流的writeObject()辦法,可以把對象寫到輸入流中。

反序列化:應用ObjectInputStream對象寫入流的readObject()辦法,並強迫轉換為已知的目的類便可。

4、對象援用的序列化

假如一個類Person某個成員變量援用了其他類(如class PersonInfo)。即:

class Person implements Serializable{

   String name;

   PersonInfo info;

}

假如想將Person類停止序列化,那末必需要知足:PersonInfo類也可以或許序列化,即也完成了Serializable接口,

class PersonInfo implements Serializable

5、多個對象援用統一個子對象

PersonInfo info = new PersonInfo(“male”,"china");

Person xiaomi = new Person("小明",info);

Person dabai = new Person("年夜白",info);

假如順次對下面三個對象序列化,本來是上面兩個對象都指向下面統一個對象,也就是指存在一個info對象,java為了避免在每一個對象序列化時序列化三個info對象,設定了假如屢次序列化統一樣java對象時,只要在第一順序列化時把這個對象轉換為字節序列輸入,以後再對它序列化只會指向第一順序列化的編號,而不會再去序列化這個對象。

6、父類序列化

假如父類完成了Serializable接口,則子類主動可序列化,不須要再顯示完成該接口。

7、應用Serializable保留自界說數據至當地的例子
MainActivity以下:

package cc.test.serializable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
/**
 * Demo描寫:
 * 將ArrayList<自界說數據>在SDCard長進行存取.
 *
 * Parcelable和Serializable的差別:
 * 內存間數據傳輸時推舉應用Parcelable,如activity間傳輸數據
 * 好比:http://blog.csdn.net/lfdfhl/article/details/10961459
 * 保留到當地或許收集傳輸時推舉應用Serializable
 */
public class TestSerializableActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    testSerializable();
  }
  private void testSerializable() {
    FileOutputStream fileOutputStream=null;
    ObjectOutputStream objectOutputStream =null;
    FileInputStream fileInputStream = null;
    ObjectInputStream objectInputStream = null;
    ArrayList<Student> studentsArrayList = new ArrayList<Student>();
    Student student = null;
    for (int i = 1; i < 5; i++) {
      student = new Student(i, "小明" + i);
      studentsArrayList.add(student);
    }
    try {
      //存入數據
      File file = new File(Environment.getExternalStorageDirectory().toString()
                 + File.separator +"Test"+File.separator + "data.dat");
      if (!file.getParentFile().exists()) {
        file.getParentFile().mkdirs();
      }
      if (!file.exists()) {
        file.createNewFile();
      }
      fileOutputStream= new FileOutputStream(file.toString());
      objectOutputStream= new ObjectOutputStream(fileOutputStream);
      objectOutputStream.writeObject(studentsArrayList);
       //掏出數據
      fileInputStream = new FileInputStream(file.toString());
      objectInputStream = new ObjectInputStream(fileInputStream);
      ArrayList<Student> savedArrayList =(ArrayList<Student>) objectInputStream.readObject();
      for (int i = 0; i < savedArrayList.size(); i++) {
        System.out.println("掏出的數據:" + savedArrayList.get(i).toString());
      }
    } catch (Exception e) {
      // TODO: handle exception
    }finally{
      if (objectOutputStream!=null) {
        try {
          objectOutputStream.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      if (fileOutputStream!=null) {
        try {
          fileOutputStream.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      if (objectInputStream!=null) {
        try {
          objectInputStream.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      if (fileInputStream!=null) {
        try {
          fileInputStream.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }
}

Student以下:

package cc.test.serializable;
import java.io.Serializable;
public class Student implements Serializable {
  private Integer id;
  private String name;
  //留意界說此字段
  public static final long serialVersionUID = 9527L;
  public Student() {
    super();
  }
  public Student(Integer id, String name) {
    super();
    this.id = id;
    this.name = name;
  }
  public Integer getId() {
    return id;
  }
  public void setId(Integer id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  @Override
  public String toString() {
    return "Student [id=" + id + ", name=" + name + "]";
  }
}

main.xml以下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >
  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />
</LinearLayout>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved