首頁 收藏 QQ群
 網(wǎng)站導航

ZNDS智能電視網(wǎng) 推薦當貝市場

TV應用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動 | Z幣中心

新手入門 / 進階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 15309|回復: 0
上一主題 下一主題
[教程]

Android 軟件開發(fā)之數(shù)據(jù)的 新建 儲存 讀取 刪除 詳解(十四)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
Android軟件開發(fā)之數(shù)據(jù)的新建 儲存 讀取 刪除   
     
1.使用SharedPreferences處理數(shù)據(jù)的 新建 儲存 讀取 刪除   
   
   
        SharedPreferences保存后生成的是XML文件,內(nèi)容是以節(jié)點的形勢保存在文件中,SharedPreferences類提供了非常豐富的處理數(shù)據(jù)的方法下面我向大家介紹一下如何使用SharedPreferences來處理數(shù)據(jù)。   
   
   
輸入須要保存的內(nèi)容   
     
輸入姓名:雨松MOMO   
輸入號碼:15810463139   
     
點擊保存成功   
     
        保存成功以后,數(shù)據(jù)被保存到了data路徑下 /當前包名 (紅框內(nèi)的包名是我的程序包名) /shared_prefs/main.xml中 , 使用EditPlus 打開保存的內(nèi)容,我們可以清晰的看到內(nèi)容是以一個節(jié)點一個節(jié)點的形式存在XML中。   
     
         SharedPreferences類中提供了非常方便方法去保存數(shù)據(jù)與讀取數(shù)據(jù)大家請看下面的代碼片段,一個程序中可以存在多個SharedPreferences保存的XML文件 ,代碼中只須要根據(jù)不同的XML名稱就可以通過方法拿到相應的對象,由于它的批量遍歷查找,當然這樣的作法肯定沒有數(shù)據(jù)庫更方便快捷,所以在開發(fā)中處理一些比較小的零碎的數(shù)據(jù)就可以保存在這里,比如說記錄軟件中用戶設置的音量大小,用戶輸入的查找信息等等都可以存在SharedPreferences中。   
  1. public class SPActivity extends Activity {   
          
        /**使用SharedPreferences 來儲存與讀取數(shù)據(jù)**/   
        SharedPreferences mShared = null;   
       
        /**程序中可以同時存在多個SharedPreferences數(shù)據(jù), 根據(jù)SharedPreferences的名稱就可以拿到對象**/   
        public final static String SHARED_MAIN = "main";   
          
        /**SharedPreferences中儲存數(shù)據(jù)的Key名稱**/   
        public final static String KEY_NAME = "name";   
        public final static String KEY_NUMBER = "number";   
          
        /**SharedPreferences中儲存數(shù)據(jù)的路徑**/   
        public final static String DATA_URL = "/data/data/";   
        public final static String SHARED_MAIN_XML = "main.xml";   
          
          
        @Override   
        protected void onCreate(Bundle savedInstanceState) {   
            setContentView(R.layout.sharedpreferences);   
            /**拿到名稱是SHARED_MAIN 的SharedPreferences對象**/   
            mShared = getSharedPreferences(SHARED_MAIN, Context.MODE_PRIVATE);   
            /**拿到SharedPreferences中保存的數(shù)值 第二個參數(shù)為如果SharedPreferences中沒有保存就賦一個默認值**/   
            String name = mShared.getString(KEY_NAME, "數(shù)據(jù)庫中沒有儲存姓名");   
            String number = mShared.getString(KEY_NUMBER, "數(shù)據(jù)庫中沒有儲存號碼");   
               
            final EditText editName = (EditText)findViewById(R.id.sp_et0);   
            final EditText editNumber = (EditText)findViewById(R.id.sp_et1);   
            editName.setHint("上次輸入的姓名為【 " +name+"】");   
            editNumber.setHint("上次輸入的號碼為【 " +number+"】");   
               
            Button button0 = (Button)findViewById(R.id.sp_button0);   
               
            /**監(jiān)聽按鈕點擊后保存用戶輸入信息到SharedPreferences中**/   
            button0.setOnClickListener(new  OnClickListener() {   
                   
                @Override   
                public void onClick(View arg0) {   
                    /**拿到用戶輸入的信息**/   
                    String name = editName.getText().toString();   
                    String number = editNumber.getText().toString();   
                    /**開始保存入SharedPreferences**/   
                    Editor editor = mShared.edit();   
                    editor.putString(KEY_NAME, name);   
                    editor.putString(KEY_NUMBER, number);   
                    /**put完畢必需要commit()否則無法保存**/   
                    editor.commit();   
                    ShowDialog("保存SharedPreferences成功");   
                      
                }   
            });   
               
            Button button1 = (Button)findViewById(R.id.sp_button1);   
            button1.setOnClickListener(new  OnClickListener() {   
                   
                @Override   
                public void onClick(View arg0) {   
                    /**開始清除SharedPreferences中保存的內(nèi)容**/   
                    Editor editor = mShared.edit();   
                    editor.remove(KEY_NAME);   
                    editor.remove(KEY_NUMBER);   
                    //editor.clear();   
                    editor.commit();   
                    ShowDialog("清除SharedPreferences數(shù)據(jù)成功");   
                }   
            });   
               
            Button button2 = (Button)findViewById(R.id.sp_button2);   
            button2.setOnClickListener(new OnClickListener() {   
       
                @Override   
                public void onClick(View arg0) {   
                    /** 刪除SharedPreferences文件 **/   
                    File file = new File(DATA_URL + getPackageName().toString()   
                            + "/shared_prefs", SHARED_MAIN_XML);   
                    if (file.exists()) {   
                        file.delete();   
                    }   
                    ShowDialog("刪除SharedPreferences文件成功");   
                }   
            });   
               
               
            super.onCreate(savedInstanceState);   
        }   
       
        public void ShowDialog(String string) {   
            AlertDialog.Builder builder = new AlertDialog.Builder(SPActivity.this);   
            builder.setIcon(R.drawable.icon);   
            builder.setTitle(string);   
            builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {   
                public void onClick(DialogInterface dialog, int whichButton) {   
                    finish();   
                }   
            });   
            builder.show();   
        }   
    }   
復制代碼
  
  1. <?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"   
            >   
            <ImageView android:id="@+id/sp_image"   
                    android:layout_width="wrap_content"   
                     android:layout_height="wrap_content"   
                    android:src="@drawable/image"   
                    android:layout_gravity="center"   
                    />   
            <EditText android:id="@+id/sp_et0"   
                              android:layout_width="fill_parent"   
                          android:layout_height="wrap_content"   
                          android:hint="請輸入你的姓名">   
            </EditText>   
            <EditText android:id="@+id/sp_et1"   
                              android:layout_width="fill_parent"   
                          android:layout_height="wrap_content"   
                          android:hint="請輸入你的號碼">   
            </EditText>   
            <Button   android:id="@+id/sp_button0"   
                      android:layout_width="wrap_content"   
                          android:layout_height="wrap_content"   
                          android:text="保存輸入內(nèi)容shared">   
            </Button>   
            <Button   android:id="@+id/sp_button1"   
                      android:layout_width="wrap_content"   
                          android:layout_height="wrap_content"   
                          android:text="清除shared保存內(nèi)容">   
            </Button>   
            <Button   android:id="@+id/sp_button2"   
                      android:layout_width="wrap_content"   
                          android:layout_height="wrap_content"   
                          android:text="刪除shared文件">   
            </Button>   
    </LinearLayout>
復制代碼
2.在本地data文件下使用自己生成的文件處理數(shù)據(jù)的 新建 儲存 讀取 刪除   
   
       如果說不想把內(nèi)容存在SharedPreferences中的話,我們可以自己寫一個文件保存須要的數(shù)據(jù),在這里我將文件保存在系統(tǒng)中的工程路徑下。   
   
輸入需要保存的內(nèi)容   
   
     
   
保存完畢后紅框內(nèi)呈現(xiàn)之前保存的數(shù)據(jù)   
     
   
        保存文件以后,文件被保存在了當前工程下 files 文件夾的路徑下,這里說一下data文件夾 如果手機沒有root 權限 用戶是訪問不到的,這種儲存方式有一個麻煩的地方就是文件中保存的數(shù)據(jù)須要程序員自己去處理 , 好比文件中保存了很多字符串數(shù)據(jù) 但是我們只須要其中的一部分數(shù)據(jù),這樣就須要自己去寫代碼去從文件中拿需要的數(shù)據(jù)。   
     
  1. public class FileActivity extends Activity {   
        public final static String FILE_NAME = "a.txt";   
          
        /**File中儲存數(shù)據(jù)的路徑**/   
        public final static String DATA_URL = "/data/data/";   
        @Override   
        protected void onCreate(Bundle savedInstanceState) {   
            setContentView(R.layout.file);   
            /**讀取內(nèi)容**/   
            String content = loadFile();   
            if(content == null) {   
                content ="上次沒有輸入內(nèi)容請輸入";   
            }   
             String str  = "上次輸入保存的內(nèi)容的姓名為【 " +content + "】";   
            final EditText editContent = ((EditText)findViewById(R.id.file_et0));   
            editContent.setHint(str);   
            Button button0 = (Button)findViewById(R.id.file_button0);   
               
            /**監(jiān)聽按鈕點擊后保存用戶輸入信息到file中**/   
            button0.setOnClickListener(new  OnClickListener() {   
                @Override   
                public void onClick(View arg0) {   
                    /**拿到用戶輸入的信息**/   
                    String content = editContent.getText().toString();   
                    /**開始保存入file**/   
                    saveFile(content);   
                    ShowDialog("保存File文件成功");   
                }   
            });   
               
            Button button1 = (Button)findViewById(R.id.file_button1);   
            /**監(jiān)聽按鈕點擊后清空file中內(nèi)容**/   
            button1.setOnClickListener(new  OnClickListener() {   
                @Override   
                public void onClick(View arg0) {   
                    cleanFile();   
                    ShowDialog("清空File文件成功");   
                }   
            });   
               
            Button button2 = (Button)findViewById(R.id.file_button2);   
               
            /**監(jiān)聽按鈕點擊后刪除file文件**/   
            button2.setOnClickListener(new  OnClickListener() {   
                @Override   
                public void onClick(View arg0) {   
                    File file = new File(DATA_URL + getPackageName().toString()   
                            + "/files", FILE_NAME);   
                    if (file.exists()) {   
                        file.delete();   
                    }   
                    ShowDialog("刪除file文件成功");   
                }   
            });   
               
            super.onCreate(savedInstanceState);   
        }   
          
        /**   
         * 保存內(nèi)容   
         * @param str   
         */   
        public void saveFile(String str) {   
            try {   
                FileOutputStream outStream = this.openFileOutput(FILE_NAME,   
                        Context.MODE_WORLD_READABLE);   
                outStream.write(str.getBytes());   
                outStream.close();   
            } catch (FileNotFoundException e) {   
            } catch (IOException e) {   
            }   
        }   
       
        /**   
         * 因為java刪除文件內(nèi)容只有一種實現(xiàn)方法,就是把整個文件重寫,只是把須要刪除的那一條記錄去除掉   
         */   
        public void cleanFile() {   
            //如果只須要刪除文件中的一部分內(nèi)容則須要在這里對字符串做一些操作   
            String cleanStr = "";   
            try {   
                FileOutputStream outStream = this.openFileOutput(FILE_NAME,   
                        Context.MODE_WORLD_READABLE);   
                outStream.write(cleanStr.getBytes());   
                outStream.close();   
            } catch (FileNotFoundException e) {   
            } catch (IOException e) {   
            }   
       
        }   
          
       
          
          
        public String loadFile() {   
            try {   
                FileInputStream inStream = this.openFileInput(FILE_NAME);   
                ByteArrayOutputStream stream = new ByteArrayOutputStream();   
                byte[] buffer = new byte[1024];   
                int length = -1;   
                while ((length = inStream.read(buffer)) != -1) {   
                    stream.write(buffer, 0, length);   
                }   
                stream.close();   
                inStream.close();   
                return stream.toString();   
            } catch (FileNotFoundException e) {   
                e.printStackTrace();   
            } catch (IOException e) {   
            }   
            return null;   
        }   
          
        public void ShowDialog(String str) {   
            AlertDialog.Builder builder = new AlertDialog.Builder(FileActivity.this);   
            builder.setIcon(R.drawable.icon);   
            builder.setTitle(str);   
            builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {   
                public void onClick(DialogInterface dialog, int whichButton) {   
                    finish();   
                }   
            });   
            builder.show();   
        }   
    }   
復制代碼
  
  1. <?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"   
            >   
            <ImageView android:id="@+id/file_image"   
                    android:layout_width="wrap_content"   
                     android:layout_height="wrap_content"   
                    android:src="@drawable/jay"   
                    android:layout_gravity="center"   
                    />   
               
            <EditText android:id="@+id/file_et0"   
                              android:layout_width="fill_parent"   
                          android:layout_height="wrap_content"   
                          android:hint="請輸入需要保存的內(nèi)容">   
            </EditText>   
            <Button   android:id="@+id/file_button0"   
                      android:layout_width="wrap_content"   
                          android:layout_height="wrap_content"   
                          android:text="保存入file">   
            </Button>   
            <Button   android:id="@+id/file_button1"   
                      android:layout_width="wrap_content"   
                          android:layout_height="wrap_content"   
                          android:text="清除file保存內(nèi)容">   
            </Button>   
            <Button   android:id="@+id/file_button2"   
                      android:layout_width="wrap_content"   
                          android:layout_height="wrap_content"   
                          android:text="刪除file文件">   
            </Button>   
    </LinearLayout>
復制代碼
3.在本地程序res/raw中讀取數(shù)據(jù)操作   
   
        Android 下提供了專門讀取程序res/raw路徑下資源的方法,但是沒有提供寫入raw內(nèi)容的方法,也就是說只能讀不能寫,在做軟件的時候有時須要讀取大量的文字資源,由于這些資源文字在軟件中不會改變所以無需去對它的內(nèi)容重寫修改,就可以使用raw來操作數(shù)據(jù)。   
   
   
如圖所示:在列表中讀取.bin文件中的內(nèi)容分別顯示在listView中   
   
   
     
        如圖所示在raw路徑下存了一個文件date0.bin ,下面是bin文件中保存的內(nèi)容,程序中須要對這個.bin文件的內(nèi)容進行讀取并顯示在屏幕中。   
     
   
   
   
下面給出代碼的實現(xiàn)   
  1. public class loadRawActivity extends ListActivity {   
       
        private class MyListAdapter extends BaseAdapter {   
            private int[] colors = new int[] { 0xff626569, 0xff4f5257 };   
       
            public MyListAdapter(Context context) {   
                mContext = context;   
            }   
       
            public int getCount() {   
                return inpormation.length;   
            }   
       
            @Override   
            public boolean areAllItemsEnabled() {   
                return false;   
            }   
       
            public Object getItem(int position) {   
                return position;   
            }   
       
            public long getItemId(int position) {   
                return position;   
            }   
       
            public View getView(int position, View convertView, ViewGroup parent) {   
                TextView tv;   
                if (convertView == null) {   
                    tv = (TextView) LayoutInflater.from(mContext).inflate(   
                            android.R.layout.simple_list_item_1, parent, false);   
                } else {   
                    tv = (TextView) convertView;   
                }   
                int colorPos = position % colors.length;   
                tv.setBackgroundColor(colors[colorPos]);   
                tv.setText(String.valueOf(position + 1) + ":"   
                        + inpormation[position]);   
                return tv;   
            }   
       
            private Context mContext;   
        }   
       
        String[] inpormation = null;   
        ListView listView;   
       
        @Override   
        protected void onCreate(Bundle savedInstanceState) {   
            readFile(R.raw.date0);   
            setListAdapter(new MyListAdapter(this));   
            listView = getListView();   
            int[] colors = { 0, 0xFF505259, 0 };   
            listView   
                    .setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));   
            listView.setDividerHeight(10);   
            super.onCreate(savedInstanceState);   
        }   
       
        /**   
         * 從raw中讀取數(shù)據(jù)   
         * @param ID   
         */   
        public void readFile(int ID) {   
            InputStream in = null;   
            String temp = "";   
            try {   
                in = this.getResources().openRawResource(ID);   
                byte[] buff = new byte[1024];// 緩存   
                int rd = 0;   
                ByteArrayOutputStream baos = new ByteArrayOutputStream();   
                while ((rd = in.read(buff)) != -1) {   
                    baos.write(buff, 0, rd);   
                    temp = new String(baos.toByteArray(), "UTF-8");   
                }   
                baos.close();   
                in.close();   
                inpormation = temp.split("
  2. ");   
            } catch (Exception e) {   
                Toast.makeText(this, "文件沒有找到", 2000).show();   
            }   
        }   
       
    }
復制代碼
3.在SD卡中處理新建 寫入 讀取 刪除 的操作   
   
       可以把數(shù)據(jù)保存在SD卡中,在SD卡中建立一個文件去保存數(shù)據(jù),這里說一下 ,SD卡 用戶是可以訪問的,也就是說可以把一些可有可無的數(shù)據(jù)存在SD卡中,即使用戶刪除了卡中的內(nèi)容也不會影像軟件的使用。   
     
將文件在SD卡中刪除   
     
  1. public class loadSDActivity extends Activity {   
        public final static String FILE_NAME = "b.txt";   
        @Override   
        protected void onCreate(Bundle savedInstanceState) {   
            setContentView(R.layout.sdfile);   
            /**讀取內(nèi)容**/   
            String content = loadFile();   
            if(content == null) {   
                content ="上次沒有輸入內(nèi)容請輸入";   
            }   
               
            final EditText editContent = (EditText)findViewById(R.id.sdfile_et0);   
            editContent.setHint("上次輸入SD卡的內(nèi)容的為【 " +content + "】");   
            Button button0 = (Button)findViewById(R.id.sdfile_button0);   
               
            /**監(jiān)聽按鈕點擊后保存用戶輸入信息到SD卡中**/   
            button0.setOnClickListener(new  OnClickListener() {   
                   
                @Override   
                public void onClick(View arg0) {   
                    /**拿到用戶輸入的信息**/   
                    String content = editContent.getText().toString();   
                    /**開始保存入SD卡**/   
                    saveFile(content);   
                    ShowDialog("保存SD卡文件成功");   
                }   
            });   
            Button button1 = (Button)findViewById(R.id.sdfile_button1);   
               
            /**去清除SD卡保存的內(nèi)容**/   
            button1.setOnClickListener(new  OnClickListener() {   
                @Override   
                public void onClick(View arg0) {   
                    cleanFile();   
                    ShowDialog("清除SD卡文件中的內(nèi)容成功");   
                }   
            });           
            Button button2 = (Button)findViewById(R.id.sdfile_button2);   
               
            /**刪除SD卡保存的文件**/   
            button2.setOnClickListener(new  OnClickListener() {   
                @Override   
                public void onClick(View arg0) {   
                    DeleteSDFile();   
                }   
            });   
               
            super.onCreate(savedInstanceState);   
        }   
          
        /**   
         * 保存入SD卡中   
         * @param str   
         */   
        public void saveFile(String str) {   
            FileOutputStream fileOutputStream = null;   
       
            File file = new File(Environment.getExternalStorageDirectory(),   
                    FILE_NAME);   
            try {   
                fileOutputStream = new FileOutputStream(file);   
                fileOutputStream.write(str.getBytes());   
                fileOutputStream.close();   
            } catch (FileNotFoundException e) {   
                e.printStackTrace();   
            }catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
          
          
        /**   
         * 讀取SD卡的內(nèi)容   
         * @return   
         */   
        public String loadFile() {   
            String path = Environment.getExternalStorageDirectory() +"/" + FILE_NAME;   
            try {   
       
                FileInputStream fi = new FileInputStream(path);   
                BufferedReader br = new BufferedReader(new InputStreamReader(   
                        fi));   
                String readString = new String();   
                while ((readString = br.readLine()) != null) {   
                    //數(shù)據(jù)多的話須要在這里處理 readString   
                    return readString;   
                }   
                fi.close();   
            } catch (FileNotFoundException e) {   
                e.printStackTrace();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
       
            return null;   
        }   
          
        /**   
         * 刪除SD卡   
         */   
        public void DeleteSDFile() {   
            String path = Environment.getExternalStorageDirectory() + "/"   
                    + FILE_NAME;   
            File file1 = new File(path);   
            boolean isdelte = file1.delete();   
            if(isdelte) {   
                ShowDialog("刪除SD卡成功");   
            }else {   
                finish();   
            }   
        }   
          
        /**   
         * 因為java刪除文件內(nèi)容只有一種實現(xiàn)方法,就是把整個文件重寫,只是把須要刪除的那一條記錄去除掉   
         */   
        public void cleanFile() {   
            //如果只須要刪除文件中的一部分內(nèi)容則須要在這里對字符串做一些操作   
            String cleanStr = "";   
            FileOutputStream fileOutputStream = null;   
       
            File file = new File(Environment.getExternalStorageDirectory(),   
                    FILE_NAME);   
            try {   
                fileOutputStream = new FileOutputStream(file);   
                fileOutputStream.write(cleanStr.getBytes());   
                fileOutputStream.close();   
            } catch (FileNotFoundException e) {   
                e.printStackTrace();   
            }catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
        public void ShowDialog(String str) {   
            AlertDialog.Builder builder = new AlertDialog.Builder(loadSDActivity.this);   
            builder.setIcon(R.drawable.icon);   
            builder.setTitle(str);   
            builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {   
                public void onClick(DialogInterface dialog, int whichButton) {   
                    finish();   
                }   
            });   
            builder.show();   
        }   
    }
復制代碼
  
  1. <?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"   
            >   
            <ImageView android:id="@+id/sdfile_image"   
                    android:layout_width="wrap_content"   
                     android:layout_height="wrap_content"   
                    android:src="@drawable/g"   
                    android:layout_gravity="center"   
                    />   
            <EditText android:id="@+id/sdfile_et0"   
                              android:layout_width="fill_parent"   
                          android:layout_height="wrap_content"   
                          android:hint="請輸入需要保存到SD卡的內(nèi)容">   
            </EditText>   
            <Button   android:id="@+id/sdfile_button0"   
                      android:layout_width="wrap_content"   
                          android:layout_height="wrap_content"   
                          android:text="保存輸入內(nèi)容到SD卡">   
            </Button>   
            <Button   android:id="@+id/sdfile_button1"   
                      android:layout_width="wrap_content"   
                          android:layout_height="wrap_content"   
                          android:text="清除SD卡保存文件的內(nèi)容">   
            </Button>   
            <Button   android:id="@+id/sdfile_button2"   
                      android:layout_width="wrap_content"   
                          android:layout_height="wrap_content"   
                          android:text="刪除SD卡中保存的文件">   
            </Button>   
    </LinearLayout>
復制代碼
最后如果你還是覺得我寫的不夠詳細 看的不夠爽 不要緊我把源代碼的下載地址貼出來   
第七講數(shù)據(jù)的儲存與讀取.rar(312.88 KB, 下載次數(shù): 709)[/I]2011-9-2 23:51 上傳點擊文件名   下載積分: 下載豆 -2

上一篇:Android游戲開發(fā)之多線程的操作方式(二十六)
下一篇:Android應用程序框架層和系統(tǒng)運行庫層日志系統(tǒng)源代碼分析
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號 )

網(wǎng)絡信息服務信用承諾書 | 增值電信業(yè)務經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號

GMT+8, 2024-10-21 06:21 , Processed in 0.081336 second(s), 18 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復 返回頂部 返回列表