Java JDK 9学习笔记 CH10 输入输出

27
串流處理裝飾器
28
串流處理裝飾器
• DataInputStream、 DataOutputStream提供讀取、寫入Java 基本資料型的方法,像是讀寫int、double、 boolean等的方法
29
30
31
串流處理裝飾器
• ObjectInputStream提供readObject()方法將 資料讀入為物件,而ObjectOutputStream提供 writeObject()方法將物件寫至目的地
19
串流繼承架構
• FileInputStream主要實作了 InputStream的read()抽象方法,使之可 從檔案中讀取資料 • FileOutputStream主要實作了 OutputStream的write()抽象方法,使之 可寫出資料至檔案
20
串流繼承架構
• FileInputStream、 FileOutputStream在讀取、寫入檔案時, 是以位元組為單位 • 通常會使用一些高階類別加以包裹,進行一 些高階操作,像是Scanner與 PrintStream類別等
6
串流設計觀念
• 如果要將某個檔案讀入並另存為另一個檔案 ..
7
串流設計觀念
• 如果要從HTTP伺服器讀取某個網頁,並另存 為檔案 …
8
串流設計觀念
• 使用.ServerSocket接受客戶 端連線的例子:
9
串流設計觀念
• 將來學到Servlet,想將檔案輸出至瀏覽器, 也會有類似的操作:
18
串流繼承架構
• FileInputStream是InputStream的子類,可 以指定檔案名稱建構實例,一旦建構檔案就開啟, 接著就可用來讀取資料 • FileOutputStream是OutputStream的子類, 可以指定檔案名稱建構實例,一旦建構檔案就開啟, 接著就可以用來寫出資料 • 無論是FileInputStream或 FileOutputStream,不使用時都要使用close() 關閉檔案
• InputStream、OutputStream提供串流 基本操作,如果想要為輸入輸出的資料作加 工處理,則可以使用包裹器類別
– 具備緩衝區作用的BufferedInputStream、 BufferedOutputStream – 具備資料轉換處理作用的DataInputStream、 DataOutputStream – 具備物件序列化能力的ObjectInputStream、 ObjectOutputStream
• 可以被這兩個方法處理的物件,必須實作 java.io.Serializable介面,這個介面並沒有 定義任何方法,只是作為標示之用,表示這個物件 是可以序列化的(Serializable)
32
33
34
串流處理裝飾器
• 如果在作物件序列化時,物件中某些資料成 員不希望被寫入,則可以標上transient關 鍵字
24
串流處理裝飾器
25
串流處理裝飾器
• 如果傳入IO.dump()的是 FileInputStream、 FileOutputStream實例,每次read()時 都會要求讀取硬碟,每次write()都會要求 寫入硬碟,這會花費許多時間在硬碟定位上
26
串流處理裝飾器
• BufferedInputStream與 BufferedOutputStream主要於內部提供 緩衝區功能 • 建構BufferedInputStream、 BufferedOutputStream必須提供 InputStream、OutputStream進行包裹, 可以使用預設或自訂緩衝區大小
37
Reader與Writer繼承架構
38
Reader與Writer繼承架構
39
Reader與Writer繼承架構
• 若要使用CharUtil.dump()讀入檔案、轉 為字串並顯示在文字模式中…
40
Reader與Writer繼承架構
• FileReader、FileWriter可以對檔案作 讀取與寫入,讀取或寫入時預設會使用作業 系統預設編碼來作字元轉換 • 在啟動JVM時,可指定-Dfile.encoding 來指定FileReader、FileWriter所使用 的編碼
• 標準輸出可以重新導向至檔案,只要執行程 式時使用>將輸出結果導向至指定的檔案
• 如果使用>>則是附加訊息
16
串流繼承架構
• 可以使用System的setOut()方法指定 PrintStream實例,將結果輸出至指定的 目的地 • 將標準輸出指定至檔案:
17
串流繼承架構
• System.err為PrintSteam實例,稱之為 標準錯誤輸出串流,用來立即顯示錯誤訊息 • System.out輸出的訊息可以使用>或>>重 新導向至檔案,但System.err輸出的訊息 一定會顯示在文字模式中,無法重新導向 • 可以使用System.setErr()指定 PrintStream,指定標準錯誤輸出串流
3
串流設計觀念
4
串流設計觀念
• 來源與目的地都不知道的情況下,如何撰寫 程式?
5
串流設計觀念
• 在不使用InputStream與OutputStream 時,必須使用close()方法關閉串流 • InputStream與OutputStream實作了 java.io.Closeable介面,其父介面為 ng.AutoCloseable介面,因此 可使用JDK7嘗試自動關閉資源語法
35
Reader與Writer繼承架構
36
Reader與Writer繼承架構
• 在不使用Reader與Writer時,必須使用 close()方法關閉串流,由於Reader與 Writer實作了Closeable介面,其父介面 為AutoCloseable介面,因此可使用JDK7 嘗試自動關閉資源語法
43
字元處理裝飾器
44
字元處理裝飾器
• 想以UTF-8處理字元資料,例如讀取UTF-8的 Main.java文字檔案,並另存為UTF-8的 Main.txt文字檔案 …
45
字元處理裝飾器
• BufferedReader、BufferedWriter可 對Reader、Writer提供緩衝區作用 • JDK 1.4之前,標準API並沒有Scanner類別, 若要在文字模式下取得使用者輸入的字串, 會如下撰寫:
串流繼承架構
• 可以使用System的setIn()方法指定 InputStream實例,指定標準輸入來源 • 將標準輸入指定為FileInputStream,可 以讀取指定檔案並顯示在文字模式
14
串流繼承架構
• 若要將10.1.1的Download範例改為輸出至標 準輸出,也可以這麼寫:
15
串流繼承架構
41
Reader與Writer繼承架構
• FileReader、FileWriter沒有可以指定 編碼的方法 • 如果在程式執行過程中想要指定編碼,則必 須使用InpuStreamReader、 OutputStreamWriter
42
字元處理裝飾器
• 想要將位元組資料轉換為對應的編碼字元, 可以使用InputStreamReader、 OutputStreamWriter對串流資料資料包 裹 • 在建立InputStreamReader與 OutputStreamWriter時,可以指定編碼, 如果沒有指定編碼,則以JVM啟動時所獲取 的預設編碼來作字元轉換
輸入輸出
學習目標
• • • • 瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器類別
1
串流設計觀念
2
串流設計觀念
• 從應用程式角度來看,如果要將資料從來源 取出,可以使用輸入串流,如果要將資料寫 入目的地,可以使用輸出串流 • 輸入串流代表物件為 java.io.InputStream實例,輸出串流代 表物件為java.io.OutputStream實例
10
串流繼承架構
11
串流繼承架構
12
串流繼承架構
• 記得System.in與System.out嗎?分別是 InputStream與PrintStream的實例 … • 較少直接操作InputStream相關方法,而 是如先前章節使用java.util.Scanner包 裹System.in
13
46பைடு நூலகம்
字元處理裝飾器
• PrintWriter與PrintStream使用上極為 類似,除了可以對OutptStream包裹之外, PrintWriter還可以對Writer進行包裹, 提供print()、println()、format()等 方法
47
22
串流繼承架構
• ByteArrayInputStream主要實作了 InputStream的read()抽象方法,使之可 從byte陣列中讀取資料 • ByteArrayOutputStream主要實作了 OutputStream的write()抽象方法,使之 可寫出資料至byte陣列
23
串流處理裝飾器
21
串流繼承架構
• ByteArrayInputStream是 InputStream的子類,可以指定byte陣列 建構實例,一旦建構就可將byte陣列當作資 料來源進行讀取 • ByteArrayOutputStream是 OutputStream的子類,可以指定byte陣 列建構實例,一旦建構將byte陣列寫作目的 地寫出資料
合集下载

java输入输出流实验报告总结

java输入输出流实验报告总结

java输入输出流实验报告总结Java输入输出流是Java中非常重要的概念,也是Java程序设计的基础。

在Java 程序中,输入输出流用于处理与设备之间的数据传输,例如键盘、鼠标、文件等。

Java的输入输出流主要包含两种类型:字节流和字符流。

字节流以字节为最小读写单位,而字符流以字符为最小读写单位。

Java的输入流有很多种类型,例如:InputStream、ByteArrayInputStream、FileInputStream等。

这些输入流的共同特点是读取外部数据到程序中。

Java的输出流也有多种类型,例如:OutputStream、ByteArrayOutputStream、FileOutputStream等。

这些输出流的共同特点是将程序中的数据输出到外部。

下面将以实验报告的形式进行总结,详细介绍Java输入输出流的原理和使用方法。

实验一:字节流输入输出1. 实验目的:掌握字节流输入输出的基本使用方法。

2. 实验内容:编写一个程序,实现从文件中读取数据,然后将数据输出到另一个文件中。

3. 实验步骤:a. 创建一个输入流对象,用于读取原始文件的数据。

b. 创建一个输出流对象,用于将读取到的数据输出到目标文件中。

c. 循环读取输入流中的数据,直到读取到文件末尾。

d. 将读取到的数据写入输出流中。

e. 关闭输入流和输出流。

4. 实验结果:成功读取原始文件中的数据,并将数据输出到目标文件中。

实验二:字符流输入输出1. 实验目的:掌握字符流输入输出的基本使用方法。

2. 实验内容:编写一个程序,实现从键盘输入文字,然后将文字输出到屏幕上。

3. 实验步骤:a. 创建一个字符输入流对象,用于读取键盘输入的文字。

b. 创建一个字符输出流对象,用于将读取到的文字输出到屏幕上。

c. 循环读取输入流中的文字,直到读取到换行符。

d. 将读取到的文字写入输出流中。

e. 关闭输入流和输出流。

4. 实验结果:成功从键盘输入文字,并将文字输出到屏幕上。

Java语言程序设计第9章_输入输出和文件操作

Java语言程序设计第9章_输入输出和文件操作
BufferedOutputStrea m
DataOutputStream PrintStream
ObjectOutputStream PipedOutputStream
输出字节流类层次结构图
9.1.2 字节流与字符流
Reader
BufferedReader LineNumberReade r
CharArrayReader FilterReader PushbackReader
【例9-12】 【例9-13】 【例9-14】
9.5 文本扫描器(Scanner)
▪ Scanner类常用的构造方法
⑴ public Scanner(String source)
构造一个新的Scanner对象,从指定的字符串数据源获取数据。 ⑵ public Scanner(File source) throws FileNotFoundException 构造一个新的Scanner对象,从File对象指定的文件数据源获取数 据。
▪ 在对流进行读写操作时,使用一块称作缓冲区的内存区域, 输出的数据先存入缓冲区,当缓冲区满了或调用缓冲流的 flush()方法后,才完成对输出设备或文件的实际输出;
▪ 输入数据时,从输入设备或文件每次读入尽可能多的数据到 缓冲区,程序需要的数据从缓冲区取得,当缓冲区变空时再 读入一个数据块。
▪ 缓冲流包括BufferedInputStream和 BufferedOutputStream以及BufferedReader和 BufferedWriter。
▪ 它们都是处理流。
9.2.2 缓冲流的使用
▪ 1.BufferedInputStream和BufferedOutputStream的构 造方法
▪ 2.BufferedReader和BufferedWriter的构造方法

java中输入输出总结

java中输入输出总结

java中输入输出总结一、数据流的基本概念流一般分为输入流(Input Stream)和输出流(Output Stream)两类,但这种划分并不是绝对的。

比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。

当然,键盘只是一个数人流,而屏幕则只是一个输出流。

java的标准数据流:标准输入输出指在字符方式下(如DOS),程序与系统进行交互的方式,分为三种:标准输入studin,对象是键盘。

标准输出stdout,对象是屏幕。

标准错误输出stderr,对象也是屏幕。

二、java.io包中的数据流和文件类字节流:从InputStream和OutputStream派生出来的一系列类。

这类流以字节(byte)为基本处理单位。

InputStream、OutputStreamFileInputStream、FileOutputStreamPipedInputStream、PipedOutputStreamByteArrayInputStream、ByteArrayOutputStreamFilterInputStream、FilterOutputStreamDataInputStream、DataOutputStreamBufferedInputStream、BufferedOutputStream字符流:从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。

Reader、WriterInputStreamReader、OutputStreamWriterFileReader、FileWriterCharArrayReader、CharArrayWriterPipedReader、PipedWriterFilterReader、FilterWriterBufferedReader、BufferedWriterStringReader、StringWriter三、字节流方法InputStream 和OutputStreamread():从流中读入数据skip():跳过流中若干字节数available():返回流中可用字节数mark():在流中标记一个位置reset():返回标记过得位置markSupport():是否支持标记和复位操作close():关闭流int read() :从输入流中读一个字节,形成一个0~255之间的整数返回(是一个抽象方法)。

java的数据类型与基本输入输出心得

java的数据类型与基本输入输出心得

一、概述Java作为一种广泛应用的编程语言,其数据类型与基本输入输出是编程中必不可少的基础知识。

掌握好Java的数据类型与基本输入输出,对于提高编程效率和代码质量非常重要。

在本文中,我们将共享一些关于Java数据类型与基本输入输出的心得体会,希望对读者有所帮助。

二、Java的数据类型1. 基本数据类型在Java中,基本数据类型包括整型、浮点型、字符型和布尔型。

我们需要了解它们的取值范围和存储空间大小,以便在编程中选择合适的数据类型。

2. 引用数据类型除了基本数据类型外,Java还有引用数据类型,如类、接口、数组等。

在使用引用数据类型时,我们需要注意其初始化和内存管理方法,以避免出现内存泄漏等问题。

三、基本输入输出1. Java标准输入输出在Java中,我们通常使用System.in和System.out进行标准输入输出。

对于各种数据类型的输入输出,我们需要熟练掌握Java提供的Scanner和PrintStream等类的使用方法。

2. 文件输入输出除了标准输入输出外,Java还支持文件输入输出。

在处理文件输入输出时,我们需要注意文件路径、文件流的打开和关闭以及异常处理等问题。

3. 网络输入输出随着网络应用的广泛应用,Java也提供了丰富的网络输入输出方式,如Socket编程、URL编程等。

我们需要了解这些网络输入输出方式的原理和使用方法,以便在实际项目中进行网络数据传输。

四、心得体会1. 数据类型与性能在选择数据类型时,我们需要综合考虑数据范围、存储空间和性能等因素。

合理选择数据类型可以提高程序的执行效率,而不恰当的数据类型可能导致性能下降。

2. 输入输出与异常处理在进行输入输出操作时,我们需要注意异常处理机制。

对于不同的输入输出方式,我们需要针对性地处理可能出现的异常,以确保程序的稳定运行。

3. 输入输出与安全性在处理用户输入和文件读写时,我们需要考虑安全性问题。

在使用Scanner进行用户输入时,需要注意对输入进行校验和过滤,以防止恶意输入导致的安全漏洞。

[java入门学习]第 9 章 Java输入输出操作

[java入门学习]第 9 章 Java输入输出操作

第九章 Java输入输出操作9.1 Java 输入输出流所有的程序语言都提及与本机文件系统交互的方式;Java也不例外。

我们将看看Java 是怎样处理标准文件输入输出的(包括stdin,stout,stderr)。

当你在网络上开发小程序时,你必须注意直接文件输入输出是不安全因素的关键。

大多数用户设置他们的浏览器,可让你自由的访问他们的文件系统,但有的不让你访问。

当然,如果你开发你内部的应用程序,你也许需要直接访问文件。

标准输入输出Unix的用户,或其他基于命令行系统的用户(如DOS),都知道标准输入输出的含义。

标准输入文件是键盘,标准输出文件是你的终端屏幕。

标准错误输出文件也指向屏幕,如果有必要,它也可以指向另一个文件以便和正常输出区分。

系统类Java通过系统类达到访问标准输入输出的功能。

上面提到的三个文件在这个系统类中实现:Stdin System.in作为InputStream类的一个实例来实现stdin,你可以使用read()和skip(long n)两个成员函数。

read()让你从输入中读一个字节,skip(long n)让你在输入中跳过n个字节。

Stout System.out作为PrintStream来实现stdout,你可以使用print()和println()两个成员函数。

这两个函数支持Java的任意基本类型作为参数。

Stderr System.err同stdout一样实现stderr。

象System.out一样,你可以访问PrintStream 成员函数。

9.2 标准输入输出例子import java.io.* class myCat{public void main(String args[]) throws IOException{int b;int count = 0;while ((b = System.in.read()) != -1){count++;System.out.print((char)b);}System.out.println(); //blank line System.err.println("counted"+count+"total bytes.");}}9.3 普通输入输出类除了基本的键盘输入和屏幕输出外,我们还需要联系文件的输入输出。

Java程序设计-9-基本输入输出处理

Java程序设计-9-基本输入输出处理
BufferedReader,BufferedWriter BufferedInputStream,BufferedOutputStream PrintWriter,PrintStream
CharArrayReader,CharArrayWriter; ByteArrayInputStream,ByteArrayOutputStream StringReader,StringWriter;StringBufferInputStream InputStreamReader,OutputStreamWriter
文件(file)读/写,以文件为读/写对象。 网络接口(TCP/UDP端口)读/写,例如,网上
冲浪、网络聊天、邮件发送。 程序(线程)间通信,例如,数据传输。
9.1.1 什么是流
简单的说流就是一个传送有序的字节序列。读者更 可以把它想象成为一个数据节点和程序之间建立起 来的连接通道上的字节序列。换句话说,流就是对 输入数据源和输出目的地的抽象表示。
StringBufferInputStream,
CharArrayReader/CharArrayWriter
StringReader/StringWriter
应用类型
1. 控制台输入/输出 2.文件(file)读/写,以文件为读写对象 3.网络接口(TCP/UDP端口)读/写,例如,网 上冲浪、网络聊天、邮件发送 4.程序(线程)间通信,例如,数据传输
PipedReader,PipedWriter;PipedInputStream,PipedOutputStream
SequenceInputStream
ObjectInputStream,ObjectOutputStream
DataInputStream,DataOutputStream

Java中常用数据类型的输入输出详解

Java中常⽤数据类型的输⼊输出详解⽬录1、Char型1.1 输⼊格式:1.2 举例说明2、int型1.1 简单的int格式输⼊:1.2 举例说明2.1带空格的int格式输⼊:2.2 举例说明3.1 复杂int格式的输⼊3.2 举例说明3、double型1.1 double保留两位格式输出1.2 举例说明4、多次输⼊1.1 输⼊格式1.2 举例说明5、数组1.1 数组输⼊格式:2.1 数组转换成字符串6、字符串1.1 字符串转换成整型,浮点型(以整型为例)1.2 整型,浮点型转换成字符串2.1 字符串转换成字符数组2.2 字符数组转换成字符串3 举例说明7、写在最后C语⾔学习完转到Java后,第⼀个感觉就是Java的写法很复杂,同时,在常⽤的数据类型的输⼊输出上也没有C语⾔那么⽅便。

在C语⾔上⾯,⽤ scanf 函数可以很⽅便的输⼊⼤多数格式,在Java上却不⾏,Java当中没有类似于scanf的语句。

本⽂搭配本⼈的输⼊输出习惯及做题的记录,对这些不同类型的如整型的,是整型的但隔开参数的...做⼀个总结。

下⾯的说明中主类均为Main类,我们使⽤Scanner来进⾏输⼊。

每⼀种输⼊或输出可能有多种⽅法,本⼈只写了较为简单的写法。

1、Char型这⾥说的char型指的是只输⼊⼀个字符的情况。

1.1 输⼊格式:import java.io.IOException;//导⼊包public class Main {public static void main(String[] args) throws IOException {char ch = (char)System.in.read();//<1>System.out.println((int)ch);}}说明:需要搭配IOException异常来使⽤。

<1>中,System.in就是从标准输⼊流(最常见的是键盘)输⼊,rand()⽅法是从这个流⾥⾯读取输⼊的内容。

Java输入输出流详解

通过数据流、序列化和文件系统提供系统输入和输出。

Java把这些不同来源和目标的数据都统一抽象为数据流。

Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。

在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流。

1.1、Java流的分类按流向分:输入流: 程序可以从中读取数据的流。

输出流: 程序能向其中写入数据的流。

按数据传输单位分:字节流: 以字节为单位传输数据的流字符流: 以字符为单位传输数据的流按功能分:节点流: 用于直接操作目标设备的流过滤流: 是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。

1.2、java.io常用类JDK所提供的所有流类位于java.io包中,都分别继承自以下四种抽象流类:InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节(8位)。

OutputSteam:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。

Reader:继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符(16位)。

Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16位)。

java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。

在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家做一个简要的介绍。

流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。

java中的输入流与输出流


3 标准错误
运行或编译Java程序时,各种错误 信息输出到标准错误设备,即显示器。 在Java中,标准错误设备用System.err表 示 。 System.err 属 于 PrintStream 类 对 象 。
10.3 文件操作
在程序中要对磁盘文件或目录进行操作, 首先要对文件或目录建立连接,为此Java提供 了File类。File类也位于java.io包中,但不是流 类,而是专门用来管理磁盘文件和目录。
OutputStream子类的继承关系
Reader类(字符流)
int read( ) long skip( ) void mark( ) void close( ) void reset( )
Reader类的主要方法
Reader BufferedReader InputStreamReader FileReader
1 建立File对象(三)
File(File dir, String name) 此构造方法中的参数dir表示一个磁盘目录对应 的File对象,参数name表示文件名或目录名。
例如,为文件c:\java\oldfile.txt建立File对象file 可以采用以下语句: File dir1=new File(“c:\\java\\oldfile.txt”) File file1=new(dir1,”oldfile.txt”)
注:使用文件输入流读取文件要处理I/O异常,也可以抛 出异常throw IOException
Java实例—以字节流方式写入文件
import java.io.*; public class File2{ public static void main(String[] args) throws IOException{ char ch; File file1=new File("c:\\jdk1.3\\example\\newFile.txt"); try{ FileOutputStream fout= new FileOutputStream(file1); System.out.println("输入任一字符串,以?结束"); ch= (char) System.in.read(); while (ch !='?'){

92java输入输出


简单的IO流(4)
DataInput/OutputStream
对于基本数据类型进行有格式的读写 DataInputStream实现了DataInput接口 readInt/Float/Char/Boolean/Long/Double() DataOutputStream实现了DataOutput接口 writeInt/Float/Char/Boolean/Long/Double()
FilterInputStream和FilterOutputStream使用了 代理(Proxy)模式,代理模式是代理对象对 被代理对象的一个功能不变的封装。
Decorator模式也是某个对象对另外一个对象 的功能包装,某些方法它直接转给包含对象, 而某些方法则由包装对象来提供,这样新包 装对象可以提供扩展的功能。
▪ 例如:文件Hello.txt采用了UTF8编码方式
new InputStreamReader ( new FileInputStream (“Hello.txt”),” UTF8”);
中写数据是输出流。 见下图流模型中四个抽象类,它们是流模
型的父类。
InputStream
字节输入流InputStream是抽象类,定义了字 节输入流的框架。
它的最重要的三个方法(输入流提供数据输 入): int read() int read(byte[] buffer) int read(byte[] buffer, int offset, int length)
FileOutputStream fos=new FileOutputStream( new File(“.\\out.txt”));
int c;
while((c=fis.read())!= -1)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档