-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
chars怎么讀(chars怎么讀音)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于chars怎么讀的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
ChatGPT國(guó)內(nèi)免費(fèi)在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、利用字節(jié)文件輸入輸出流,編寫程序完成文件的讀,寫,復(fù)制功能。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.io.Reader;
/**
* 多種方式讀文件內(nèi)容。 按字節(jié)讀取文件內(nèi)容、按字符讀取文件內(nèi)容、按行讀取文件內(nèi)容、隨機(jī)讀取文件內(nèi)容
*/
public class ReadFromFile
{
public static void main(String[] args)
{
String fileName = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
/**
* 以字節(jié)為單位讀取文件,常用于讀二進(jìn)制文件,如圖片、聲音、影像等文件。
*
* @param fileName
* 文件的名
*/
public static void readFileByBytes(String fileName)
{
File file = new File(fileName);
InputStream in = null;
try
{
System.out.println("以字節(jié)為單位讀取文件內(nèi)容,一次讀一個(gè)字節(jié):");
// 一次讀一個(gè)字節(jié)
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1)
{
System.out.write(tempbyte);
}
in.close();
}
catch (IOException e)
{
e.printStackTrace();
return;
}
try
{
System.out.println("以字節(jié)為單位讀取文件內(nèi)容,一次讀多個(gè)字節(jié):");
// 一次讀多個(gè)字節(jié)
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// 讀入多個(gè)字節(jié)到字節(jié)數(shù)組中,byteread為一次讀入的字節(jié)數(shù)
while ((byteread = in.read(tempbytes)) != -1)
{
System.out.write(tempbytes, 0, byteread);
}
}
catch (Exception e1)
{
e1.printStackTrace();
}
finally
{
if (in != null)
{
try
{
in.close();
}
catch (IOException e1)
{
}
}
}
}
/**
* 以字符為單位讀取文件,常用于讀文本,數(shù)字等類型的文件
*
* @param fileName
* 文件名
*/
public static void readFileByChars(String fileName)
{
File file = new File(fileName);
Reader reader = null;
try
{
System.out.println("以字符為單位讀取文件內(nèi)容,一次讀一個(gè)字節(jié):");
// 一次讀一個(gè)字符
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = reader.read()) != -1)
{
// 對(duì)于windows下,\r\n這兩個(gè)字符在一起時(shí),表示一個(gè)換行。
// 但如果這兩個(gè)字符分開(kāi)顯示時(shí),會(huì)換兩次行。
// 因此,屏蔽掉\r,或者屏蔽\n。否則,將會(huì)多出很多空行。
if (((char) tempchar) != '\r')
{
System.out.print((char) tempchar);
}
}
reader.close();
}
catch (Exception e)
{
e.printStackTrace();
}
try
{
System.out.println("以字符為單位讀取文件內(nèi)容,一次讀多個(gè)字節(jié):");
// 一次讀多個(gè)字符
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(fileName));
// 讀入多個(gè)字符到字符數(shù)組中,charread為一次讀取字符數(shù)
while ((charread = reader.read(tempchars)) != -1)
{
// 同樣屏蔽掉\r不顯示
if ((charread == tempchars.length) && (tempchars[tempchars.length - 1] != '\r'))
{
System.out.print(tempchars);
}
else
{
for (int i = 0; i < charread; i++)
{
if (tempchars[i] == '\r')
{
continue;
}
else
{
System.out.print(tempchars[i]);
}
}
}
}
}
catch (Exception e1)
{
e1.printStackTrace();
}
finally
{
if (reader != null)
{
try
{
reader.close();
}
catch (IOException e1)
{
}
}
}
}
/**
* 以行為單位讀取文件,常用于讀面向行的格式化文件
*
* @param fileName
* 文件名
*/
public static void readFileByLines(String fileName)
{
File file = new File(fileName);
BufferedReader reader = null;
try
{
System.out.println("以行為單位讀取文件內(nèi)容,一次讀一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次讀入一行,直到讀入null為文件結(jié)束
while ((tempString = reader.readLine()) != null)
{
// 顯示行號(hào)
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (reader != null)
{
try
{
reader.close();
}
catch (IOException e1)
{
}
}
}
}
/**
* 隨機(jī)讀取文件內(nèi)容
*
* @param fileName
* 文件名
*/
public static void readFileByRandomAccess(String fileName)
{
RandomAccessFile randomFile = null;
try
{
System.out.println("隨機(jī)讀取一段文件內(nèi)容:");
// 打開(kāi)一個(gè)隨機(jī)訪問(wèn)文件流,按只讀方式
randomFile = new RandomAccessFile(fileName, "r");
// 文件長(zhǎng)度,字節(jié)數(shù)
long fileLength = randomFile.length();
// 讀文件的起始位置
int beginIndex = (fileLength > 4) ? 4 : 0;
// 將讀文件的開(kāi)始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte[] bytes = new byte[10];
int byteread = 0;
// 一次讀10個(gè)字節(jié),如果文件內(nèi)容不足10個(gè)字節(jié),則讀剩下的字節(jié)。
// 將一次讀取的字節(jié)數(shù)賦給byteread
while ((byteread = randomFile.read(bytes)) != -1)
{
System.out.write(bytes, 0, byteread);
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (randomFile != null)
{
try
{
randomFile.close();
}
catch (IOException e1)
{
}
}
}
}
/**
* 顯示輸入流中還剩的字節(jié)數(shù)
*
* @param in
*/
private static void showAvailableBytes(InputStream in)
{
try
{
System.out.println("當(dāng)前字節(jié)輸入流中的字節(jié)數(shù)為:" + in.available());
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
/////////////////////////////////////////////////////////////////
package io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyFileUtil
{
/**
* 復(fù)制整個(gè)目錄的內(nèi)容,如果目標(biāo)目錄存在,則不覆蓋
*
* @param srcDirName
* 待復(fù)制的目錄名
* @param destDirName
* 目標(biāo)目錄名
* @return 如果復(fù)制成功返回true,否則返回false
*/
public static boolean copyDirectory(String srcDirName, String destDirName)
{
return CopyFileUtil.copyDirectory(srcDirName, destDirName, false);
}
/**
* 復(fù)制整個(gè)目錄的內(nèi)容
*
* @param srcDirName
* 待復(fù)制的目錄名
* @param destDirName
* 目標(biāo)目錄名
* @param overlay
* 如果目標(biāo)目錄存在,是否覆蓋
* @return 如果復(fù)制成功返回true,否則返回false
*/
public static boolean copyDirectory(String srcDirName, String destDirName, boolean overlay)
{
// 判斷原目錄是否存在
File srcDir = new File(srcDirName);
if (!srcDir.exists())
{
System.out.println("復(fù)制目錄失?。涸夸?quot; + srcDirName + "不存在!");
return false;
}
else if (!srcDir.isDirectory())
{
System.out.println("復(fù)制目錄失?。?quot; + srcDirName + "不是一個(gè)目錄!");
return false;
}
// 如果目標(biāo)文件夾名不以文件分隔符結(jié)尾,自動(dòng)添加文件分隔符
if (!destDirName.endsWith(File.separator))
{
destDirName = destDirName + File.separator;
}
File destDir = new File(destDirName);
// 如果目標(biāo)文件夾存在,
if (destDir.exists())
{
if (overlay)
{
// 允許覆蓋則刪除已存在的目標(biāo)目錄
System.out.println("目標(biāo)目錄已存在,準(zhǔn)備刪除它!");
if (!DeleteFileUtil.delete(destDirName))
{
System.out.println("復(fù)制目錄失?。簞h除目標(biāo)目錄" + destDirName + "失敗!");
}
}
else
{
System.out.println("復(fù)制目錄失敗:目標(biāo)目錄" + destDirName + "已存在!");
return false;
}
}
else
{
// 創(chuàng)建目標(biāo)目錄
System.out.println("目標(biāo)目錄不存在,準(zhǔn)備創(chuàng)建它!");
if (!destDir.mkdirs())
{
System.out.println("復(fù)制目錄失?。簞?chuàng)建目標(biāo)目錄失??!");
return false;
}
}
boolean flag = true;
// 列出源文件夾下所有文件(包括子目錄)的文件名
File[] files = srcDir.listFiles();
for (int i = 0; i < files.length; i++)
{
// 如果是一個(gè)單個(gè)文件,則進(jìn)行復(fù)制
if (files[i].isFile())
{
flag = CopyFileUtil.copyFile(files[i].getAbsolutePath(), destDirName + files[i].getName());
if (!flag)
{
break;
}
}
// 如果是子目錄,繼續(xù)復(fù)制目錄
if (files[i].isDirectory())
{
flag = CopyFileUtil.copyDirectory(files[i].getAbsolutePath(), destDirName + files[i].getName());
if (!flag)
{
break;
}
}
}
if (!flag)
{
System.out.println("復(fù)制目錄" + srcDirName + "至" + destDirName + "失??!");
return false;
}
System.out.println("復(fù)制目錄" + srcDirName + "至" + destDirName + "成功!");
return true;
}
/**
* 復(fù)制單個(gè)文件, 如果目標(biāo)文件存在,則不覆蓋。
*
* @param srcFileName
* 待復(fù)制的文件名
* @param destFileName
* 目標(biāo)文件名
* @return 如果復(fù)制成功,則返回true,否則返回false
*/
public static boolean copyFile(String srcFileName, String destFileName)
{
return CopyFileUtil.copyFile(srcFileName, destFileName, false);
}
/**
* 復(fù)制單個(gè)文件
*
* @param srcFileName
* 待復(fù)制的文件名
* @param destFileName
* 目標(biāo)文件名
* @param overlay
* 如果目標(biāo)文件存在,是否覆蓋
* @return 如果復(fù)制成功,則返回true,否則返回false
*/
public static boolean copyFile(String srcFileName, String destFileName, boolean overlay)
{
// 判斷原文件是否存在
File srcFile = new File(srcFileName);
if (!srcFile.exists())
{
System.out.println("復(fù)制文件失?。涸募?quot; + srcFileName + "不存在!");
return false;
}
else if (!srcFile.isFile())
{
System.out.println("復(fù)制文件失?。?quot; + srcFileName + "不是一個(gè)文件!");
return false;
}
// 判斷目標(biāo)文件是否存在
File destFile = new File(destFileName);
if (destFile.exists())
{
// 如果目標(biāo)文件存在,而且復(fù)制時(shí)允許覆蓋。
if (overlay)
{
// 刪除已存在的目標(biāo)文件,無(wú)論目標(biāo)文件是目錄還是單個(gè)文件
System.out.println("目標(biāo)文件已存在,準(zhǔn)備刪除它!");
if (!DeleteFileUtil.delete(destFileName))
{
System.out.println("復(fù)制文件失敗:刪除目標(biāo)文件" + destFileName + "失??!");
return false;
}
}
else
{
System.out.println("復(fù)制文件失?。耗繕?biāo)文件" + destFileName + "已存在!");
return false;
}
}
else
{
if (!destFile.getParentFile().exists())
{
// 如果目標(biāo)文件所在的目錄不存在,則創(chuàng)建目錄
System.out.println("目標(biāo)文件所在的目錄不存在,準(zhǔn)備創(chuàng)建它!");
if (!destFile.getParentFile().mkdirs())
{
System.out.println("復(fù)制文件失?。簞?chuàng)建目標(biāo)文件所在的目錄失??!");
return false;
}
}
}
// 準(zhǔn)備復(fù)制文件
int byteread = 0;// 讀取的位數(shù)
InputStream in = null;
OutputStream out = null;
try
{
// 打開(kāi)原文件
in = new FileInputStream(srcFile);
// 打開(kāi)連接到目標(biāo)文件的輸出流
out = new FileOutputStream(destFile);
byte[] buffer = new byte[1024];
// 一次讀取1024個(gè)字節(jié),當(dāng)byteread為-1時(shí)表示文件已經(jīng)讀完
while ((byteread = in.read(buffer)) != -1)
{
// 將讀取的字節(jié)寫入輸出流
out.write(buffer, 0, byteread);
}
System.out.println("復(fù)制單個(gè)文件" + srcFileName + "至" + destFileName + "成功!");
return true;
}
catch (Exception e)
{
System.out.println("復(fù)制文件失?。?quot; + e.getMessage());
return false;
}
finally
{
// 關(guān)閉輸入輸出流,注意先關(guān)閉輸出流,再關(guān)閉輸入流
if (out != null)
{
try
{
out.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if (in != null)
{
try
{
in.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
public static void main(String[] args)
{
// 復(fù)制單個(gè)文件,如果目標(biāo)存在,則覆蓋
String srcPath = "C:/temp/tempfile0.txt";
String destPath = "C:/temp_bak/tempfile0_bak.txt";
CopyFileUtil.copyFile(srcPath, destPath, true);
// 如果目標(biāo)存在,則不覆蓋
CopyFileUtil.copyFile(srcPath, destPath);
System.out.println();
// 復(fù)制文件夾,如果目標(biāo)存在,則覆蓋
String srcDir = "C:/temp";
String destDir = "D:/temp";
CopyFileUtil.copyDirectory(srcDir, destDir, true);
}
}
二、JAVA中怎么讀取DAT文件中的內(nèi)容
DAT估計(jì)是個(gè)二進(jìn)制 或者文本 跟普通讀取文件是一樣的讀取上來(lái) 你再對(duì)文件格式進(jìn)行拆分 首先你要了解 它的格式是什么 你可以用
NOTEPAD++或者 C32ASM打開(kāi) 看看
public class ReadFromFile {
/**
* 以字節(jié)為單位讀取文件,常用于讀二進(jìn)制文件,如圖片、聲音、影像等文件。
*/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
System.out.println("以字節(jié)為單位讀取文件內(nèi)容,一次讀一個(gè)字節(jié):");
// 一次讀一個(gè)字節(jié)
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.write(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
try {
System.out.println("以字節(jié)為單位讀取文件內(nèi)容,一次讀多個(gè)字節(jié):");
// 一次讀多個(gè)字節(jié)
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// 讀入多個(gè)字節(jié)到字節(jié)數(shù)組中,byteread為一次讀入的字節(jié)數(shù)
while ((byteread = in.read(tempbytes)) != -1) {
System.out.write(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}
}
/**
* 以字符為單位讀取文件,常用于讀文本,數(shù)字等類型的文件
*/
public static void readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
try {
System.out.println("以字符為單位讀取文件內(nèi)容,一次讀一個(gè)字節(jié):");
// 一次讀一個(gè)字符
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = reader.read()) != -1) {
// 對(duì)于windows下,rn這兩個(gè)字符在一起時(shí),表示一個(gè)換行。
// 但如果這兩個(gè)字符分開(kāi)顯示時(shí),會(huì)換兩次行。
// 因此,屏蔽掉r,或者屏蔽n。否則,將會(huì)多出很多空行。
if (((char) tempchar) != 'r') {
System.out.print((char) tempchar);
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("以字符為單位讀取文件內(nèi)容,一次讀多個(gè)字節(jié):");
// 一次讀多個(gè)字符
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(fileName));
// 讀入多個(gè)字符到字符數(shù)組中,charread為一次讀取字符數(shù)
while ((charread = reader.read(tempchars)) != -1) {
// 同樣屏蔽掉r不顯示
if ((charread == tempchars.length)
&& (tempchars[tempchars.length - 1] != 'r')) {
System.out.print(tempchars);
} else {
for (int i = 0; i < charread; i++) {
if (tempchars[i] == 'r') {
continue;
} else {
System.out.print(tempchars[i]);
}
}
}
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
/**
* 以行為單位讀取文件,常用于讀面向行的格式化文件
*/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行為單位讀取文件內(nèi)容,一次讀一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次讀入一行,直到讀入null為文件結(jié)束
while ((tempString = reader.readLine()) != null) {
// 顯示行號(hào)
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
/**
* 隨機(jī)讀取文件內(nèi)容
*/
public static void readFileByRandomAccess(String fileName) {
RandomAccessFile randomFile = null;
try {
System.out.println("隨機(jī)讀取一段文件內(nèi)容:");
// 打開(kāi)一個(gè)隨機(jī)訪問(wèn)文件流,按只讀方式
randomFile = new RandomAccessFile(fileName, "r");
// 文件長(zhǎng)度,字節(jié)數(shù)
long fileLength = randomFile.length();
// 讀文件的起始位置
int beginIndex = (fileLength > 4) ? 4 : 0;
// 將讀文件的開(kāi)始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte[] bytes = new byte[10];
int byteread = 0;
// 一次讀10個(gè)字節(jié),如果文件內(nèi)容不足10個(gè)字節(jié),則讀剩下的字節(jié)。
// 將一次讀取的字節(jié)數(shù)賦給byteread
while ((byteread = randomFile.read(bytes)) != -1) {
System.out.write(bytes, 0, byteread);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (randomFile != null) {
try {
randomFile.close();
} catch (IOException e1) {
}
}
}
}
/**
* 顯示輸入流中還剩的字節(jié)數(shù)
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("當(dāng)前字節(jié)輸入流中的字節(jié)數(shù)為:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}
三、C# 連續(xù)讀取數(shù)據(jù)庫(kù)中的文件流
C#讀寫txt文件的兩種方法:
1.添加命名空間
System.IO;
System.Text;
2.文件的讀取
(1).使用FileStream類進(jìn)行文件的讀取,并將它轉(zhuǎn)換成char數(shù)組,然后輸出。
byte[] byData = new byte[100];
char[] charData = new char[1000];
public void Read()
{
try
{
FileStream file = new FileStream("E:\\test.txt", FileMode.Open);
file.Seek(0, SeekOrigin.Begin);
file.Read(byData, 0, 100); //byData傳進(jìn)來(lái)的字節(jié)數(shù)組,用以接受FileStream對(duì)象中的數(shù)據(jù),第2個(gè)參數(shù)是字節(jié)數(shù)組中開(kāi)始寫入數(shù)據(jù)的位置,它通常是0,表示從數(shù)組的開(kāi)端文件中向數(shù)組寫數(shù)據(jù),最后一個(gè)參數(shù)規(guī)定從文件讀多少字符.
Decoder d = Encoding.Default.GetDecoder();
d.GetChars(byData, 0, byData.Length, charData, 0);
Console.WriteLine(charData);
file.Close();
}
catch (IOException e)
{
Console.WriteLine(e.ToString());
}
}
(2).使用StreamReader讀取文件,然后一行一行的輸出。
public void Read(string path)
{
StreamReader sr = new StreamReader(path,Encoding.Default);
String line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line.ToString());
}
}
3.文件的寫入
(1).使用FileStream類創(chuàng)建文件,然后將數(shù)據(jù)寫入到文件里。
public void Write()
{
FileStream fs = new FileStream("E:\\ak.txt", FileMode.Create);
//獲得字節(jié)數(shù)組
byte[] data = System.Text.Encoding.Default.GetBytes("Hello World!");
//開(kāi)始寫入
fs.Write(data, 0, data.Length);
//清空緩沖區(qū)、關(guān)閉流
fs.Flush();
fs.Close();
}
(2).使用FileStream類創(chuàng)建文件,使用StreamWriter類,將數(shù)據(jù)寫入到文件。
public void Write(string path)
{
FileStream fs = new FileStream(path, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
//開(kāi)始寫入
sw.Write("Hello World!!!!");
//清空緩沖區(qū)
sw.Flush();
//關(guān)閉流
sw.Close();
fs.Close();
}
四、用C++讀取一個(gè)文件,文件前4byte是int型然后是char型等等,如何分類讀取?
正常的編譯器int都是四個(gè)字節(jié),就直接讀入一個(gè)int變量就可以了,然后再讀入一個(gè)char變量。
就直接賦值給變量,編譯去會(huì)自己安排字節(jié)數(shù)的。
如果按字節(jié)讀入的話,還要重新排序,高高低低,這個(gè)有點(diǎn)麻煩。
以上就是關(guān)于chars怎么讀相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
ChatGPT受益分支!AI大模型引科技巨頭爭(zhēng)相入局,這些上市公司有相關(guān)業(yè)務(wù)
迷你世界圖標(biāo)變化(迷你世界圖標(biāo)變化怎么弄)