国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【文件操作與IO】Java中如何操作文件

這篇具有很好參考價值的文章主要介紹了【文件操作與IO】Java中如何操作文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

?Java 中操作文件

File 概述

屬性

構(gòu)造方法

方法

代碼示例

文件內(nèi)容的讀寫 —— 數(shù)據(jù)流

?InputStream 概述

FileInputStream 概述

利用 Scanner 進行字符讀取

OutputStream 概述

利用 OutputStreamWriter 進行字符寫入

利用 PrintWriter 找到我們熟悉的方法

代碼參考

如何按字節(jié)進行數(shù)據(jù)讀

如何按字節(jié)進行數(shù)據(jù)寫

如何按字符進行數(shù)據(jù)讀

如何按字符進行數(shù)據(jù)寫


?Java 中操作文件


操作系統(tǒng)的一個重要功能就是對文件的管理,每個操作系統(tǒng)都有自己的一套系統(tǒng)API調(diào)用,Java作為一個跨平臺的語言,JVM針對不同的操作系統(tǒng)做了一層封裝,我們只需使用JDK提供的關(guān)于文件操作的API就可以完成不同的系統(tǒng)上的文件操作。

Java 中通過 java.io.File 類來對一個文件(包括目錄)進行抽象的描述。注意,有 File 對象,并不代表真實存在該文件。

File 概述

屬性

修飾符及類型?

屬性

說明

static String

pathSeparator

依賴于系統(tǒng)的路徑分隔符,String 類型的表示

static char

pathSeparator

依賴于系統(tǒng)的路徑分隔符,char 類型的表示

構(gòu)造方法

【文件操作與IO】Java中如何操作文件,JavaEE,java,jvm,開發(fā)語言

方法

修飾符及返回

值類型

方法簽名

說明

String

getParent()

返回 File 對象的父目錄文件路徑

String

getName()

返回 FIle 對象的純文件名稱

String

getPath()

返回 File 對象的文件路徑

String

getAbsolutePath()

返回 File 對象的絕對路徑

String

getCanonicalPath()

返回 File 對象的修飾過的絕對路徑

boolean

exists()

判斷 File 對象描述的文件是否真實存在

boolean

isDirectory()

判斷 File 對象代表的文件是否是一個目錄

boolean

isFile()

判斷 File 對象代表的文件是否是一個普通文件

boolean

createNewFile()

根據(jù) File 對象,自動創(chuàng)建一個空文件。成功創(chuàng)建后返

回 true

boolean

delete()

根據(jù) File 對象,刪除該文件。成功刪除后返回 true

void

deleteOnExit()

根據(jù) File 對象,標(biāo)注文件將被刪除,刪除動作會到

JVM 運行結(jié)束時才會進行

String[]

list()

返回 File 對象代表的目錄下的所有文件名

File[]

listFiles()

返回 File 對象代表的目錄下的所有文件,以 File 對象

表示

boolean

mkdir()

創(chuàng)建 File 對象代表的目錄

boolean

mkdirs()

創(chuàng)建 File 對象代表的目錄,如果必要,會創(chuàng)建中間目

boolean

renameTo(File

dest)

進行文件改名,也可以視為我們平時的剪切、粘貼操

boolean

canRead()

判斷用戶是否對文件有可讀權(quán)限

boolean

canWrite()

判斷用戶是否對文件有可寫權(quán)限

代碼示例

示例1

觀察 get 系列的特點和差異

import java.io.File;
import java.io.IOException;
public class Main {
 ? ?public static void main(String[] args) throws IOException {
 ? ? ? ?File file = new File("..\\hello-world.txt"); // 并不要求該文件真實存在
 ? ? ? ?System.out.println(file.getParent());
 ? ? ? ?System.out.println(file.getName());
 ? ? ? ?System.out.println(file.getPath());
 ? ? ? ?System.out.println(file.getAbsolutePath());
 ? ? ? ?System.out.println(file.getCanonicalPath());
 ? }
}

運行結(jié)果

..
hello-world.txt
..\hello-world.txt
D:\代碼練習(xí)\文件示例1\..\hello-world.txt
D:\代碼練習(xí)\hello-world.txt

示例2

普通文件的創(chuàng)建、刪除

import java.io.File;
import java.io.IOException;
public class Main {
 ? ?public static void main(String[] args) throws IOException {
 ? ? ? ?File file = new File("hello-world.txt"); // 要求該文件不存在,才能看到相同的現(xiàn)象
 ? ? ? ?System.out.println(file.exists());
 ? ? ? ?System.out.println(file.isDirectory());
 ? ? ? ?System.out.println(file.isFile());
 ? ? ? ?System.out.println(file.createNewFile());
 ? ? ? ?System.out.println(file.exists());
 ? ? ? ?System.out.println(file.isDirectory());
 ? ? ? ?System.out.println(file.isFile());
 ? ? ? ?System.out.println(file.createNewFile());
 ? }
}

運行結(jié)果

false
false
false
true
true
false
true
false

示例3

觀察 deleteOnExit 的現(xiàn)象

import java.io.IOException;
public class Main {
 ? ?public static void main(String[] args) throws IOException {
 ? ? ? ?File file = new File("some-file.txt"); // 要求該文件不存在,才能看到相同的現(xiàn)象
 ? ? ? ?System.out.println(file.exists());
 ? ? ? ?System.out.println(file.createNewFile());
 ? ? ? ?System.out.println(file.exists());
 ? ? ? ?file.deleteOnExit();
 ? ? ? ?System.out.println(file.exists());
 ? }
}

運行結(jié)果

false
true
true
true

程序運行結(jié)束后,文件還是被刪除了

示例4

觀察目錄創(chuàng)建

import java.io.File;
import java.io.IOException;
public class Main {
 ? ?public static void main(String[] args) throws IOException {
 ? ? ? ?File dir = new File("some-parent\\some-dir"); // some-parent 和 somedir 都不存在
 ? ? ? ?System.out.println(dir.isDirectory());
 ? ? ? ?System.out.println(dir.isFile());
 ? ? ? ?System.out.println(dir.mkdir());
 ? ? ? ?System.out.println(dir.isDirectory());
 ? ? ? ?System.out.println(dir.isFile());
 ? }
}

運行結(jié)果

false
false
false
false
false

mkdir() 的時候,如果中間目錄不存在,則無法創(chuàng)建成功; mkdirs() 可以解決這個問題。

import java.io.File;
import java.io.IOException;
public class Main {
 ? ?public static void main(String[] args) throws IOException {
 ? ? ? ?File dir = new File("some-parent\\some-dir"); // some-parent 和 somedir 都不存在
 ? ? ? ?System.out.println(dir.isDirectory());
 ? ? ? ?System.out.println(dir.isFile());
 ? ? ? ?System.out.println(dir.mkdirs());
 ? ? ? ?System.out.println(dir.isDirectory());
 ? ? ? ?System.out.println(dir.isFile());
 ? }
}

運行結(jié)果

false
false
true
true
false

示例5

觀察文件重命名

import java.io.File;
import java.io.IOException;
public class Main {
 ? ?public static void main(String[] args) throws IOException {
 ? ? ? ?File file = new File("some-file.txt"); // 要求 some-file.txt 得存在,可以是普通文件,可以是目錄
 ? ? ? ?File dest = new File("dest.txt"); ? // 要求 dest.txt 不存在
 ? ? ? ?System.out.println(file.exists());
 ? ? ? ?System.out.println(dest.exists());
 ? ? ? ?System.out.println(file.renameTo(dest));
 ? ? ? ?System.out.println(file.exists());
 ? ? ? ?System.out.println(dest.exists());
 ? }
}

運行結(jié)果

true
false
true
false
true

文件內(nèi)容的讀寫 —— 數(shù)據(jù)流


【文件操作與IO】Java中如何操作文件,JavaEE,java,jvm,開發(fā)語言

數(shù)據(jù)流分類

【文件操作與IO】Java中如何操作文件,JavaEE,java,jvm,開發(fā)語言

?InputStream 概述

方法

修飾符及
返回值類
方法簽名
說明
int
read()
讀取一個字節(jié)的數(shù)據(jù),返回 -1 代表已經(jīng)完全讀完了
int
read(byte[] b)
最多讀取 b.length 字節(jié)的數(shù)據(jù)到 b 中,返回實際讀到的數(shù)
量; -1 代表以及讀完了
int
read(byte[] b,
int off, int len)
最多讀取 len - off 字節(jié)的數(shù)據(jù)到 b 中,放在從 off 開始,返
回實際讀到的數(shù)量; -1 代表以及讀完了
void
close()
關(guān)閉字節(jié)流

說明

InputStream 只是一個抽象類,要使用還需要具體的實現(xiàn)類。關(guān)于 InputStream 的實現(xiàn)類有很多,基本可以認為不同的輸入設(shè)備都可以對應(yīng)一個 InputStream 類,我們現(xiàn)在只關(guān)心從文件中讀取,所以使用 FileInputStream

FileInputStream 概述

構(gòu)造方法
簽名
說明
FileInputStream(File file)
利用 File 構(gòu)造文件輸入流
FileInputStream(String name)
利用文件路徑構(gòu)造文件輸入流

示例

這里我們把文件內(nèi)容中填充中文看看,注意,寫中文的時候使用 UTF-8 編碼。hello.txt 中填寫 "你好中國"

注意:這里我利用了這幾個中文的 UTF-8 編碼后長度剛好是 3 個字節(jié)和長度不超過 1024 字節(jié)的現(xiàn)狀,但這種方式并不是通用的

import java.io.*;
// 需要先在項目目錄下準(zhǔn)備好一個 hello.txt 的文件,里面填充 "你好中國" 的內(nèi)容
public class Main {
 ? ?public static void main(String[] args) throws IOException {
 ? ? ? ?try (InputStream is = new FileInputStream("hello.txt")) {
 ? ? ? ? ? ?byte[] buf = new byte[1024];
 ? ? ? ? ? ?int len;
 ? ? ? ? ? ?while (true) {
 ? ? ? ? ? ? ? ?len = is.read(buf);
 ? ? ? ? ? ? ? ?if (len == -1) {
 ? ? ? ? ? ? ? ? ? ?// 代表文件已經(jīng)全部讀完
 ? ? ? ? ? ? ? ? ? ?break;
 ? ? ? ? ? ? ? }
 ? ? ? ? ? ? ? ?// 每次使用 3 字節(jié)進行 utf-8 解碼,得到中文字符
 ? ? ? ? ? ? ? ?// 利用 String 中的構(gòu)造方法完成
 ? ? ? ? ? ? ? ?// 這個方法了解下即可,不是通用的解決辦法
 ? ? ? ? ? ? ? ?for (int i = 0; i < len; i += 3) {
 ? ? ? ? ? ? ? ? ? ?String s = new String(buf, i, 3, "UTF-8");
 ? ? ? ? ? ? ? ? ? ?System.out.printf("%s", s);
 ? ? ? ? ? ? ? }
 ? ? ? ? ? }
 ? ? ? }
 ? }
}

利用 Scanner 進行字符讀取

上述例子中,我們看到了對字符類型直接使用 InputStream 進行讀取是非常麻煩且困難的,所以,我們使用一種我們之前比較熟悉的類來完成該工作,就是 Scanner 類。

構(gòu)造方法
說明
Scanner(InputStream is, String charset)
使用 charset 字符集進行 is 的掃描讀取
示例
import java.io.*;
import java.util.*;
// 需要先在項目目錄下準(zhǔn)備好一個 hello.txt 的文件,里面填充 "你好中國" 的內(nèi)容
public class Main {
 ? ?public static void main(String[] args) throws IOException {
 ? ? ? ?try (InputStream is = new FileInputStream("hello.txt")) {
 ? ? ? ? ? try (Scanner scanner = new Scanner(is, "UTF-8")) {
 ? ? ? ? ? ? ? while (scanner.hasNext()) {
 ? ? ? ? ? ? ? ? ? String s = scanner.next();
 ? ? ? ? ? ? ? ? ? System.out.print(s);
 ? ? ? ? ? ? ? }
 ? ? ? ? ? }
 ? ? ? }
 ? }
}

OutputStream 概述

方法
修飾
符及
返回
值類
方法簽名
說明
void
write(int b)
寫入要給字節(jié)的數(shù)據(jù)
void
write(byte[]
b)
b 這個字符數(shù)組中的數(shù)據(jù)全部寫入 os
int
write(byte[]
b, int off,
int len)
b 這個字符數(shù)組中從 off 開始的數(shù)據(jù)寫入 os 中,一共寫 len
void
close()
關(guān)閉字節(jié)流
void
flush()
重要:我們知道 I/O 的速度是很慢的,所以,大多的 OutputStream
了減少設(shè)備操作的次數(shù),在寫數(shù)據(jù)的時候都會將數(shù)據(jù)先暫時寫入內(nèi)存的
一個指定區(qū)域里,直到該區(qū)域滿了或者其他指定條件時才真正將數(shù)據(jù)寫
入設(shè)備中,這個區(qū)域一般稱為緩沖區(qū)。但造成一個結(jié)果,就是我們寫的
數(shù)據(jù),很可能會遺留一部分在緩沖區(qū)中。需要在最后或者合適的位置,
調(diào)用 flush (刷新)操作,將數(shù)據(jù)刷到設(shè)備中。

說明

OutputStream 同樣只是一個抽象類,要使用還需要具體的實現(xiàn)類。我們現(xiàn)在還是只關(guān)心寫入文件中,所以使用 FileOutputStream

利用 OutputStreamWriter 進行字符寫入

import java.io.*;
public class Main {
 ? ?public static void main(String[] args) throws IOException {
 ? ? ? ?try (OutputStream os = new FileOutputStream("output.txt")) {
 ? ? ? ? ? ?String s = "你好中國";
 ? ? ? ? ? ?byte[] b = s.getBytes("utf-8");
 ? ? ? ?    os.write(b);
            // 不要忘記 flush
 ? ? ? ? ? ?os.flush();
 ? ? ? }
 ? }
}

利用 PrintWriter 找到我們熟悉的方法

上述,我們其實已經(jīng)完成輸出工作,但總是有所不方便,我們接來下將 OutputStream 處理下,使用PrintWriter 類來完成輸出,因為文章來源地址http://www.zghlxwxcb.cn/news/detail-523805.html

PrintWriter 類中提供了我們熟悉的 print/println/printf 方法
import java.io.*;
public class Main {
 ? ?public static void main(String[] args) throws IOException {
 ? ? ? ?try (OutputStream os = new FileOutputStream("output.txt")) {
 ? ? ? ? ? ?try (OutputStreamWriter osWriter = new OutputStreamWriter(os, "UTF-8")) {
 ? ? ? ? ? ? ? ?try (PrintWriter writer = new PrintWriter(osWriter)) {
 ? ? ? ? ? ? ? ? ? ?writer.println("我是第一行");
 ? ? ? ? ? ? ? ? ? ?writer.print("我的第二行\(zhòng)r\n");
 ? ? ? ? ? ? ? ? ? ?writer.printf("%d: 我的第三行\(zhòng)r\n", 1 + 1);
 ? ? ? ? ? ? ? ? ? ?writer.flush();
 ? ? ? ? ? ? ? }
 ? ? ? ? ? }
 ? ? ? }
 ? }
}

代碼參考


如何按字節(jié)進行數(shù)據(jù)讀

try (InputStream is = ...) {
 ? ?byte[] buf = new byte[1024];
 ? ?while (true) {
 ? ? ? ?int n = is.read(buf);
 ? ? ? ?if (n == -1) {
 ? ? ? ? ? ?break;
 ? ? ? }
 ? ? ? ?// buf 的 [0, n) 表示讀到的數(shù)據(jù),按業(yè)務(wù)進行處理
 ? }
}

如何按字節(jié)進行數(shù)據(jù)寫

try (OutputStream os = ...) {
 ? ?byte[] buf = new byte[1024];
 ? ?while (/* 還有未完成的業(yè)務(wù)數(shù)據(jù) */) {
 ? ? ? ?// 將業(yè)務(wù)數(shù)據(jù)填入 buf 中,長度為 n
 ? ? ? ?int n = ...;
 ? ? ? ?os.write(buf, 0, n);
 ? }
 ? ?os.flush(); // 進行數(shù)據(jù)刷新操作
}

如何按字符進行數(shù)據(jù)讀

try (InputStream is = ...) {
 ? ?try (Scanner scanner = new Scanner(is, "UTF-8")) {
 ? ? ? ?while (scanner.hasNextLine()) {
 ? ? ? ? ? ?String line = scanner.nextLine();
 ? ? ? ? ? ?// 根據(jù) line 做業(yè)務(wù)處理
 ? ? ? }
 ? }
}

如何按字符進行數(shù)據(jù)寫

try (OutputStream os = ...) {
 ? ?try (OutputStreamWriter osWriter = new OutputStreamWriter(os, "UTF-8")) {
 ? ? ? ?try (PrintWriter writer = new PrintWriter(osWriter)) {
 ? ? ? ? ? ?while (/* 還有未完成的業(yè)務(wù)數(shù)據(jù) */) {
 ? ? ? ? ? ? ? ?writer.println(...);
 ? ? ? ? ? }
 ? ? ? ? ? ?writer.flush(); // 進行數(shù)據(jù)刷新操作
 ? ? ? }
 ? }
}

到了這里,關(guān)于【文件操作與IO】Java中如何操作文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【文件IO操作】Java代碼實現(xiàn),文件與IO,文件類型,文件代碼操作,文件操作案例

    【文件IO操作】Java代碼實現(xiàn),文件與IO,文件類型,文件代碼操作,文件操作案例

    前言: 大家好,我是 良辰丫 ,今天我將與大家一起學(xué)習(xí)文件操作的相關(guān)操作,跟隨我的步伐,一起往下看!?????? ??個人主頁:良辰針不戳 ??所屬專欄:javaEE初階 ??勵志語句:生活也許會讓我們遍體鱗傷,但最終這些傷口會成為我們一輩子的財富。 ??期待大家三連,關(guān)注,

    2023年04月18日
    瀏覽(20)
  • Java之文件操作與IO

    Java之文件操作與IO

    目錄 一.認識文件 1.1文件是什么?? 1.2文件的組織 ?1.3文件路徑 1.4文件的分類 二.文件操作 2.1File概述 ?三.文件內(nèi)容操作--IO 3.1JavaIO的認識? 3.2Reader和Writer ?Reader類? ?Writer類 3.2FileInputStream和FileOutputStream ?FileInputStream類 ?FileOutputStream類 四.總結(jié) ??個人主頁:tq02的博客_C

    2024年02月10日
    瀏覽(16)
  • JavaEE & 文件操作和IO & 目錄掃描全文檢索小程序

    JavaEE & 文件操作和IO & 目錄掃描全文檢索小程序

    不知道說啥了,看看吧 在之前的學(xué)習(xí)中,基本上都是圍繞內(nèi)存展開的~ MySQL 主要是操作硬盤的 文件IO也是是操作硬盤的~ IO : i nput o utput 創(chuàng)造文件,刪除文件,重命名文件,創(chuàng)建目錄······ 一些操作沒有權(quán)限也做不了~ 1.1 路徑 就是我們的文件系統(tǒng)上的一個文件/ 目錄 的具

    2023年04月09日
    瀏覽(19)
  • 【JavaEE】文件操作和IO-目錄掃描全文檢索小程序

    【JavaEE】文件操作和IO-目錄掃描全文檢索小程序

    不知道說啥了,看看吧 在之前的學(xué)習(xí)中,基本上都是圍繞內(nèi)存展開的~ MySQL 主要是操作硬盤的 文件IO也是是操作硬盤的~ IO : i nput o utput 創(chuàng)造文件,刪除文件,重命名文件,創(chuàng)建目錄······ 一些操作沒有權(quán)限也做不了~ 1.1 路徑 就是我們的文件系統(tǒng)上的一個文件/ 目錄 的具

    2024年02月09日
    瀏覽(19)
  • Java IO:文件讀寫、流操作與常用技巧

    Java IO流指的是Java輸入輸出流,用于處理與文件、網(wǎng)絡(luò)等設(shè)備之間的數(shù)據(jù)傳輸。Java提供了 InputStream 和 OutputStream 兩個抽象類作為所有輸入輸出流類的基類,以及 Reader 和 Writer 兩個抽象類作為所有 字符 輸入輸出流類的基類。同時,Java還提供了許多具體的輸入輸出流類和字符輸

    2024年02月04日
    瀏覽(26)
  • 【Java文件操作】手把手教你拿捏IO 流

    【Java文件操作】手把手教你拿捏IO 流

    哈嘍,大家好~我是保護小周?,本期為大家?guī)淼氖?Java 文件操作,理解文件的概念以及,常用的操作文件的類和方法, FileInputStream 類 和 FileOutputStream? , PrintWriter? and Scnner,? Reader and ?Wirter? 確定不來看看嘛~ 更多精彩敬請期待:保護小周? *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘

    2023年04月15日
    瀏覽(28)
  • <JavaEE> 文件IO -- 數(shù)據(jù)流和文件內(nèi)容操作(Reader 和 Writer 、InputStream 和 OutputStream)

    目錄 一、數(shù)據(jù)流概述 二、流的關(guān)閉 2.1 使用 close() 方法 2.2 使用 try-finally 2.3 使用?try-with-resources 三、字符流的讀寫 3.1 Reader 類 3.2 Writer 類 四、字節(jié)流的讀寫 4.1?InputStream?類 4.2?OutputStream?類 1)在 Java 中,文件的操作分為兩類 操作文件系統(tǒng) 通過 File 類,在系統(tǒng)中進行增、刪

    2024年02月04日
    瀏覽(26)
  • 【Java基礎(chǔ)教程】(四十五)IO篇 · 中:轉(zhuǎn)換流、內(nèi)存流和打印流(探索裝飾設(shè)計模式與PrintStream類的進階),文件操作案例實踐、字符編碼問題~

    【Java基礎(chǔ)教程】(四十五)IO篇 · 中:轉(zhuǎn)換流、內(nèi)存流和打印流(探索裝飾設(shè)計模式與PrintStream類的進階),文件操作案例實踐、字符編碼問題~

    掌握內(nèi)存操作流、轉(zhuǎn)換流、打印流的使用; 掌握文件復(fù)制操作; 掌握字符的主要編碼類型以及亂碼問題產(chǎn)生的原因; 雖然字節(jié)流與字符流表示兩種不同的數(shù)據(jù)流操作,但是這兩種流彼此間是可以實現(xiàn)互相轉(zhuǎn)換的,而要實現(xiàn)這樣的轉(zhuǎn)換可以通過 InputStreamReader 、 OutputStreamWrit

    2024年02月16日
    瀏覽(25)
  • JavaEE初階 - 文件/IO

    JavaEE初階 - 文件/IO

    我們先來認識狹義上的文件(file)。針對硬盤這種持久化存儲的I/O設(shè)備,當(dāng)我們想要進行數(shù)據(jù)保存時,往往不是保存成一個整體,而是獨立成一個個的單位進行保存,這個獨立的單位就被抽象成文件的概念,就類似辦公桌上的一份份真實的文件一般。 文件除了有數(shù)據(jù)內(nèi)容之外,

    2024年02月02日
    瀏覽(26)
  • Java 中如何實現(xiàn)文件的讀寫操作?(十六)

    在Java中,文件I/O(輸入/輸出)操作是一項非常基礎(chǔ)的任務(wù)。在Java中,可以使用File和FileInputStream、FileOutputStream、BufferedReader、PrintWriter等類來進行文件讀寫操作。 文件讀取 在Java中,可以使用FileInputStream和BufferedReader類來讀取文件。 FileInputStream: FileInputStream是一個用于從文件

    2024年02月02日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包