《Java面向对象编程》课件-第13章 io流处理_第1页
《Java面向对象编程》课件-第13章 io流处理_第2页
《Java面向对象编程》课件-第13章 io流处理_第3页
《Java面向对象编程》课件-第13章 io流处理_第4页
《Java面向对象编程》课件-第13章 io流处理_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章io流处理

学习内容02File类04字节流010305字符流对象输入输出流PrintStream流06字符编码01File类概念针对文件的这类操作,JDK中提供了一个File类,该类封装了一个路径,并提供了一系列的方法用于操作该路径所指向的文件。File类的常用构造方法构造方法名称功能描述File(Stringpathname)通过指定的一个字符串类型的文件路径来创建一个新的File对象File(Stringparent.Stringchild)根据指定的一个字符串类型的父路径和一个字符串类型的子路径(包括文件名称)创建一个File对象File(Fileparent.Stringchild)根据指定的File类的父路径和字符串类型的子路径(包括文件名称)创建一个File对象

01File类File类中的常用方法01File类文件属性获取与判断,案例:publicclassDemo1{publicstaticvoidmain(String[]args){Stringpath="e:\\Demo1.txt";Filefile=newFile(path);//采用构造方法,创建一个文件对象

//1.判断方法

System.out.println(file.exists()==true?"存在":"不存在");System.out.println(file.isDirectory()==true?"是文件目录":"不是文件目录");System.out.println(file.isFile()==true?"是文件":"不是文件");System.out.println(file.canRead()==true?"可读":"不可读");System.out.println(file.canWrite()==true?"可写":"不可写");System.out.println(file.canExecute()==true?"可执行":"不可执行");//2.获得方法

System.out.println("文件路径是:"+file.getPath());System.out.println("文件绝对路径是:"+file.getAbsolutePath());System.out.println("父文件路径是:"+file.getParent());System.out.println("文件名是:"+file.getName());}}01File类文件操作,教材中的案例1,1、文件目录的遍历publicclassDemo2{

publicstaticvoidmain(String[]args){

Filefile=newFile("e:\\phone");

if(file.isFile()){

System.out.println(file.getName());

}else{

listName(file);

}

}

/**

*定义一个列出文件列表的方法,该方法时一个递归方法,终止条件是当文件中没有目录,全为文件

*打印时停止递归

*@paramfile

*/

publicstaticvoidlistName(Filefile){

if(file.isFile()){

System.out.println("--"+file.getName());

}else{

System.out.println("||"+file.getName());

File[]files=file.listFiles();

for(Filefile1:files){

listName(file1);

}

}

}

}01File类文件操作,教材中的案例2,2、非空目录的删除publicclassDemo3{

publicstaticvoidmain(String[]args){

Filefile=newFile("e:\\phone");

if(file.isFile()){

file.delete();

}else{

deleteDir(file);

}

}

publicstaticvoiddeleteDir(Filefile){

if(file.exists()){

File[]files=file.listFiles();

for(Filefile1:files){

if(file1.isDirectory()){

deleteDir(file1);

}else{

file1.delete();

}

}

}

file.delete();

}

}02字节流概述:在File类的学习过程中,我们只能完成文件的属性,文件的创建和删除等操作,对于文件的读取,写入数据操作,没有方法能够实现。文件读取,从理论上来说就是将硬盘中的文件读入到内存中,文件的写入,就是将内存中的数据保存在硬盘中。当文件读取时,数据从硬盘文件流向内存,我们叫输入流。文件写入时,数据从内存流向硬盘,我们叫输出流。硬盘中的文件存储实际上都是字节(Byte)存储的,如果我们读取或者写入数据时,直接的按照字节读取或者写入的方式,这种数据流,我们称之为字节流,02字节流字节输出流OutputStream:OutputStream是一个抽象类,是所有输出字节流的超类。操作的数据都是字节,定义了输出字节流的基本共性功能方法,常用方法如下表:方法名称功能描述voidwrite(intb)向输出流写人一个字节voidwrite(byte[]b)把参数b指定的字节数组的所有字节写到输出流voidwrite(byte[]b,intoff,intlen)将指定byte数组中从偏移量off开始的len个字节写人输出流voidflush()刷新此输出流并强制写出所有缓冲的输出字节

voidclose()关闭此输出流并释放与此流相关的所有系统资源

OutputStream有很多子类,其中子类FileOutputStream可用来写入字节数据到文件中去,FileOutputStream类,即文件输出流,是用于将字节数据写入File的输出。FileOutputStream类常用的构造方法,如下表:构造方法名称功能描述FileOutputStream(Filefile)创建一个向指定File对象表示的文件中写入数据的文件输出流。FileOutputStream(Stringname)创建一个向具有指定名称的文件中写入数据的输出文件流。02字节流publicclassDemo4_1{publicstaticvoidmain(String[]args)throwsIOException{FileOutputStreamfout=newFileOutputStream("c:\\123.txt");//根据文件路径,创建一个文件输出流对象

fout.write('a');//采用fout对象,写入字符‘a’到文件中。

System.out.println("写入成功!");}}案例1-3:publicclassDemo4_2{publicstaticvoidmain(String[]args)throwsIOException{FileOutputStreamfout=newFileOutputStream("e:\\123.txt");byte[]bytes="sdfhksdjfhksdfhjksdfhgjksdfsdfkhskd".getBytes();//将字符串转化为字节数组。

fout.write(bytes);//一次性写入字节数组

System.out.println("写入成功!");}}02

字节流前面两个例子,都是覆盖写入,覆盖就是写入之前,会去掉以前所有的数据,有时候这种写入并不符合实际需求,下面的一个代码讲述了,在源文件中进行追加写入,代码如下:publicclassDemo4_3{publicstaticvoidmain(String[]args)throwsIOException{FileOutputStreamfout=newFileOutputStream("e:\\123.txt",true);//设置为true,就是追加写入

byte[]bytes="\r\nsdfhksdjfhksdfhjksdfhgjksdfsdfkhskd".getBytes();//"\r\n"追加时换行

//将字符串转化为字节数组。

fout.write(bytes);//一次性写入字节数组

System.out.println("写入成功!");//关闭资源

fout.close();}}02

输入流InputStream

我们可以把内存中的数据写出到文件中,那怎样把文件中的数据读到内存中,我们通过InputStream实现。InputStream是抽象类,是表示字节输入流的所有类的超类,定义了字节输入流的基本共性功能方法。方法名称功能描述intread()从输人流读取一个8位的字节,把它转换为0—255之间的整数,并返回这一整数

intread(byte[]b)从输入流读取若干字节,把它们保存到参数b指定的字节数组中,返回的整数表示读取字节数

intread(byte[]b,inoff,intlen)从输人流读取若干字节,把它们保存到参数b指定的字节数组中,off指定字节数组开始保存数据的起始下标,len表示读取的字节长度voidclose()关闭此输人流并释放与该流关联的所有系统资源IutputStream有很多子类,其中子类FileInputStream可用来将文件中的数据读取到内存中,FileIutputStream类,即文件输入流,是用于将字节数据读入到内存的输入。FileOutputStream类常用的构造方法:构造方法名称功能描述FileIutputStream(Filefile)通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的File对象file指定。FileIutputStream(Stringname)通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名name指定。02

输入流InputStream

我们可以把内存中的数据写出到文件中,那怎样把文件中的数据读到内存中,我们通过InputStream实现。InputStream是抽象类,是表示字节输入流的所有类的超类,定义了字节输入流的基本共性功能方法。方法名称功能描述intread()从输人流读取一个8位的字节,把它转换为0—255之间的整数,并返回这一整数

intread(byte[]b)从输入流读取若干字节,把它们保存到参数b指定的字节数组中,返回的整数表示读取字节数

intread(byte[]b,inoff,intlen)从输人流读取若干字节,把它们保存到参数b指定的字节数组中,off指定字节数组开始保存数据的起始下标,len表示读取的字节长度voidclose()关闭此输人流并释放与该流关联的所有系统资源IutputStream有很多子类,其中子类FileInputStream可用来将文件中的数据读取到内存中,FileIutputStream类,即文件输入流,是用于将字节数据读入到内存的输入。FileOutputStream类常用的构造方法:构造方法名称功能描述FileIutputStream(Filefile)通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的File对象file指定。FileIutputStream(Stringname)通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名name指定。02

输入流InputStreamFileIutputStream类是IutputStream抽象类的一个具体实现类,专门用于文件的读取操作,现在通过一个具体的案例来学习文件的读取操作。publicclassDemo5_1{publicstaticvoidmain(String[]args)throwsIOException{FileInputStreamfs=newFileInputStream("e:\\123.txt");//根据文件路径,创建一个文件输入流对象

intcontent=fs.read();//读取一个字节的二进制流,赋值给content变量

while(content!=-1){//如果数据读完,返回值为-1.System.out.print((char)content);content=fs.read();//继续读取数据

}}}publicclassDemo5_2{publicstaticvoidmain(String[]args)throwsIOException{FileInputStreamfs=newFileInputStream("e:\\123.txt");byte[]bytes=newbyte[1024];//创建字节数组

intlength=fs.read(bytes);//一次性读取数组大小的数据,返回读取数据的长度

while(length!=-1){//如果length!=-1,说明文件数据没有读完

System.out.println(newString(bytes,0,length));//将每次读取的字节数组重构成字符串打印输出

length=fs.read(bytes);//继续读取数据。

}}}02

字节流的方式完成文件复制通过上面的方法完成,很显然效率太低,为了提高复制效率,我们可以将一个文件通过输入流读取多个字节到内存中,那么这个内存中的字节数组可以通过输出流写入到另一个文件中,循环读取写入,就可以完成一个文件到另一个文件的复制工作。代码如下:publicclassDemo6_2{

publicstaticvoidmain(String[]args)throwsIOException{

FileInputStreamfin=newFileInputStream("e:\\123.txt");

FileOutputStreamfout=newFileOutputStream("e:\\456.txt");

byte[]bytes=newbyte[1024];

intlength=fin.read(bytes);

//读一个字节到内存length

while(length!=-1){

fout.write(bytes,0,length);

//将内存中的一个字节length写入到文件

length=fin.read(bytes);

}

System.out.println("复制完成");

fout.close();

fin.close();

}

}02

字节流的方式完成文件复制将一个文件通过输入流读取一个字节到内存中,那么这个内存中的字节可以通过输出流写入到另一个文件中,循环读取写入,就可以完成一个文件到另一个文件的复制工作。publicclassDemo6_1{

publicstaticvoidmain(String[]args)throwsIOException{

FileInputStreamfin=newFileInputStream("e:\\123.txt");

FileOutputStreamfout=newFileOutputStream("e:\\456.txt");

intlength=fin.read();

//读一个字节到内存length

while(length!=-1){

fout.write(length);

//将内存中的一个字节length写入到文件

length=fin.read();

}

System.out.println("复制完成");

fout.close();

fin.close();

}

}02

字节缓冲流在jdk中还提供两个带缓冲的字节流,分别是BufferedlnputStream和BufferdOutputStream,它们的构造方法中分别接收InputStream和OutputStream类型的参数,在读写数据时提供缓冲功能。应用程序、缓冲流和底层字节流之间的关系,如下图所示。从图中可以看出应用程序是通过缓冲流来完成数据读写的,而缓冲流又是通过底层字节流与设备进行关联的,接下来先来看一下BufferedlnputStream和BufferedOutputStream这两个流的构造方法,如下表所示:构造方法功能描述1、BufferedlnputStream

BufferedInputStream(InputStream

in)通过InputStream

流对象,创建一个BufferedInputStream缓冲流,BufferedInputStream(InputStream

in,int

size)通过InputStream

流对象,创建具有指定缓冲区大小的BufferedInputStream缓冲流2、BufferedOutputStream

BufferedOutputStream(OutputStream

out)

创建一个新的缓冲输出流,以将数据写入指定的底层输出流。BufferedOutputStream(OutputStream

out,int

size)创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。02

节缓冲流案例如下:publicclassDemo7{

publicstaticvoidmain(String[]args)throwsException{

BufferedInputStreambin=newBufferedInputStream(newFileInputStream("e:\\H3C_CAS.pdf"));

BufferedOutputStreambout=newBufferedOutputStream(newFileOutputStream("e:\\123.pdf"));

intlen=bin.read();

while(len!=-1){

bout.write(len);

}

System.out.println("复制完成!");

bin.close();

bout.close();

}

}03

字符流概述前面我们学习过文件可以采用字节流进行读取,那么如果我们进行读取文本文件时,是不是必须要采用字节流进行读取操作呢,不是的,我们可以直接采用字符流进行读取,为此JDK提供了字符流。同字节流一样,字符流也有两个抽象的顶级父类,分别是Reader和Writer。其中Reader是字符输人流,用于从某个源设备读取字符,Writer是字符输出流,用于向某个目标设备写人字符。Reader和Writer作为字符流的顶级父类,也有许多子类。字符输出流WriterWriter是一个抽象类,是写入字符流的超类。操作的数据都是字符,定义了写入字符流的基本共性功能方法,常用方法如下:方法名称功能描述voidwrite(intc)向输出流写人一个字符voidwrite(char[]c)把参数c指定的字符数组的所有字符写到输出流voidwrite(char[]c,intoff,intlen)将指定c数组中从偏移量off开始的len个字符写人输出流voidwrite(Stringstr)把参数str指定的字符串写到输出流voidwrite(Stringstr,intoff,intlen)将指定str字符串中从偏移量off开始的len个字符写人输出流voidflush()刷新此输出流并强制写出所有缓冲的输出字符

voidclose()关闭此输出流并释放与此流相关的所有系统资源

03

字符流Writer有很多子类,其中子类FileWriter可用来写入字符到文件中去,FileWriter类的常用构造方法,如下:方法名称功能描述FileWriter(File

file)根据给定的File对象构造一个FileWriter对象。FileWriter(File

file,boolean

append)根据给定的File对象构造一个FileWriter对象,如果append参数为真,则对文件进行追加FileWriter(String

fileName)根据给定的文件名构造一个FileWriter对象。FileWriter(String

fileName,boolean

append)

根据给定的文件名构造一个FileWriter对象,如果append参数为真,则对文件进行追加案例如下:publicclassDemo8{publicstaticvoidmain(String[]args)throwsIOException{FileWriterfileWriter=newFileWriter("e:\\456.txt");fileWriter.write("你好,朋友,一起去爬山吧!");fileWriter.close();}}03

字符流Reader是一个抽象类,是字符输入流的超类。操作的数据都是字符,定义了输入字符流的基本共性功能方法,常用方法如下:方法名称功能描述intread()读取单个字符。intread(char[]c)将字符读入数组intread(char[]c,inoff,intlen)将字符读入数组的某一部分。voidclose()关闭此输人流并释放与该流关联的所有系统资源Reader有很多子类,其中子类FileReader可用来读取字符到输入流中,FileReader类的常用构造方法,如下:方法名称功能描述FileReader(File

file)根据给定的File对象构造一个FileReader对象。FileReader(String

fileName)根据给定的文件名构造一个FileReade对象。03

字符流FileReader类是Reader抽象类的一个具体实现类,专门用于文本文件的读取操作,现在通过一个具体的案例来学习文本文件的读取,操作代码如下:publicclassDemo9{

/**

*一个字符一个字符的读取

*@throwsException

*/

@Test

publicvoidreadOne()throwsException{

FileReaderfileReader=newFileReader("e:\\456.txt");

intread=fileReader.read();

while(read!=-1){

System.out.print((char)read);

read=fileReader.read();

}fileReader.close();

}

/**

*一次性读入到字符数组中

*@throwsException

*/

@Test

publicvoidreadBuff()throwsException{

FileReaderfileReader=newFileReader("e:\\456.txt");

char[]chars=newchar[100];

intlen=fileReader.read(chars);

while(len!=-1){

System.out.print(newString(chars,0,len));

len=fileReader.read(chars);

}

fileReader.close();}

}03

字符流字符缓冲流在jdk中还提供两个带缓冲的字符流,分别是BufferedReader和BufferdWriter,它们的构造方法中分别接收Reader和Writer类型的参数,在读写数据时提供缓冲功能,和字节缓冲流的原理类似。BufferedReader和BufferdWriter的常用的读入和写入方法,与FileReader和FileWriter类的常用方法类似,只不过BufferedReader提供了一个重要的方法readLine(),该方法用于一次读取一行文本。接下来通过一个案例来学习如何使用这两个缓冲流实现文件的拷贝,代码如下。publicclassDemo10{

publicstaticvoidmain(String[]args)throwsException{

FileReaderfileReader=newFileReader("d:\\456.txt");

BufferedReaderbufferedReader=newBufferedReader(fileReader);

FileWriterfileWriter=newFileWriter("d:\\des.txt");

BufferedWriterbufferedWriter=newBufferedWriter(fileWriter);

Stringstr;

while((str=bufferedReader.readLine())!=null){

bufferedWriter.write(str);

bufferedWriter.newLine();//写入换行符

}

bufferedReader.close();

bufferedWriterclose();

}

}03

字符流转换流学习了字节流和字符流,但有时候字节流和字符流之间也需要进行转换。在JDK中提供了两个类可以将字节流转换为字符流.它们分别是InputStreamReader和OutputStreamWriter。其中OutputStreamWriter是Writer的子类,它可以将一个字节输出流转换成字符输出流,方便直接写入字符,而InputStreamReader是Reader的子类,它可以将一个字节输入流转换成字符输人流,方便直接读取字符。通过转换流进行数据读写的过程,如下图所示。为了提高读写效率,可以通过BufferedReader和BufferedWriter对转换流进行封装,代码如下所示。publicclassDemo11{

publicstaticvoidmain(String[]args)throwsException{

FileInputStreamin=newFileInputStream(“d:\\456.txt”);

InputStreamReaderins=newInputStreamReader(in);

BufferedReaderbufferedReader=newBufferedReader(ins);

FileOutputStreamout=newFileOutputStream(“d:\\des.txt”);

OutputStreamWriterouts=newOutputStreamWriter(out);

BufferedWriterbufferedWriter=newBufferedWriter(outs);

Stringstr;

while((str=bufferedReader.readLine())!=null){

bufferedWriter.write(str);

bufferedWriter.newLine();

}

bufferedReader.close();

bufferedWriter.close();}}04

对象输入输出流概述:程序运行时,我们需要在内存中创建多个对象,程序停止,这些对象就被当作垃圾回收了,如果我们希望保存内存中的对象数据,则我们可以将对象转换为字节保存在硬盘中,这个操作过程就叫做对象序列化过程。为此jdk为我们提供了对象输出流(ObjectOutputStream)来实现对象的序列化。当对象进行序列化时,必须保证该对象实现Serializable接口,否则程序会出现NotSerializableException异常。同样我们也可以执行反操作,就是将文件中的数据读取到内存,反序列化成对象。为此jdk为我们提供了对象输入流(ObjectIntputStream)来实现对象的反序列化。对象输出流(ObjectOutputStream)与对象输入流(ObjectIntputStream)的构造方法如下表所示:方法名称功能描述ObjectInputStream(InputStream

in)根据给定的输入流对象构造一个ObjectIntputStream对象。ObjectOutputStream(OutputStream

out)根据给定的输出流构造一个ObjectOutputStream对象。从构造方式上看,可以根据一个输入和输出流创建一个对象的输入和输出流。对象输出流(ObjectOutputStream)与对象输入流(ObjectIntputStream)常用方法列表如下:方法名称功能描述voidwriteObject(Object

obj)ObjectOutputStream类的方法,将一个对象进行写入。

Object

readObject()ObjectIntputStream类的方法,从输入流中读取对象,返回object数据类型04

对象输入输出流如何将Student对象序列化,保存在硬盘上和从一个文件中读取对象的两个过程。代码如下:publicclassDemo12{

@Test

publicvoidwriteStudent()throwsException{

Studentstudent=newStudent();

student.id=1001;

student.name="张三";

student.age=25;

FileOutputStreamfileOutputStream=newFileOutputStream("d:\\oop.txt");

ObjectOutputStreamoot=newObjectOutputStream(fileOutputStream);

oot.writeObject(student);//将学生对象写入到文件中

}

publicvoidreadStudent()throwsException{

FileInputStreamfileInputStream=newFileInputStream("d:\\oop.txt");

ObjectInputStreamooi=newObjectInputStream(fileInputStream);

Studentstudent=(Student)ooi.readObject();//从文件中读取对象到内存中

System.out.println(student.id+"\t"+student.name+"\t"+student.age);

}

}

classStudentimplementsSerializable{

intid;

Stringname;

intage;

}

05

PrintStream流2、概述:输出流写数据时,只能输出字节或字符类型的数据。如果希望输出其他类型。例如一个基本数据类型的int值、一个Student类型的对象等,此时需要将数据先转为字符串再输出。这种操作方式显然比较麻烦,为此在jdk中提供了一个PrintStream类。它提供了一系列用于打印数据的print()和println()方法,被称作打印流PrintStream。它可以实现将基本数据类型的数据或引用数据类型的对象格式化成字符串后再输出。PrintStream流常用的构造方法,如下所示:

构造方法名称功能描述PrintStream(OutputStream

out)创建新的打印流。PrintStream(String

fileName)创建具有指定文件名称且不带自动行刷新的新打印流。PrintStream(File

file)创建具有指定文件且不带自动行刷新的新打印流。PrintStream流常用方法,方法列表,如下表:方法名称功能描述print(String

s)打印Stringprintln(String

x)打印String,然后终止该行。flush()

刷新该流的缓冲。close()关闭此输出流并释放与此流相关的所有系统资源

05

PrintStream流案例如下:publicclassDemo13{

publicstaticvoidmain(String[]args)throwsFileNotFoundException{

PrintStreamps=newPrintStream("d:\\teacher.txt");

ps.println("1");

ps.println("教师信息如下:");

ps.println(newTeacher(2001,"谢老师",30));

ps.close();

}

}

classTeacher{

intid;

Stringname;

intage;

publicTeacher(intid,Stringname,intage){

this.id=id;

this.name=name;

this.age=age;

}

@Override

publicStringtoString(){

return"教师编号"+id+",姓名为:"+name+",年龄为:"+age;

}

}

06

字符编码概述:我们知道计算机底层数据存储的都是二进制数据,而我们生活中的数据是各种类型的,如何将生活中的数据与计算机中存储的二进制数据对应起来呢?就是所谓的计算机编码,意思就是说,每种数据采用一种特定的映射与二进制数据对应起来。这种对应关系我们就叫做编码表。当我们在存储字符时,字符先要依据编码表编码成二进制,然后再写入到文件中。同样当我们在读取字符文件时,我们读到的二进制,需要依据相同的编码表解码成字符。我们经常看到的乱码的原因,主要是因为,编码和解码不是采用相同的编码表造成的。比如当我们在存储字符“你好”两个字时,我们采用utf-8进行编码存储,而我们读取这两个字符时,采用gbk的编码进行解码,那么解码出的字符自然是乱码,因为编码和解码依据的编码表不一致。

06

字符编码

针对不同的文字,每个国家都制定了自己的码表,下面就来介绍几种最常用的字符码表,如下表所示。

码表码表描述ASCII美国标准信息交换码,使用7位二进制数来表示所有的大小写字母、数字0-9、标点符号以及在美式英语中使用的特殊控制字符ISO8859-1拉丁码表,兼容ASCII,还包括了西欧语言、希腊语、泰语、阿拉伯语等GB2312中文码表,兼容ASCII,每个英文占1个字节,中文占2个字节(2个字节都为负数,最高位都为1)GBK,GB18030兼容GB2312,包含更多中文,每个英文占一个字节,中文占2个字节(第1个字节为负数,第2个字节可正可负)Unicode国际标准码,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求,每个字符占2个字节。Java中存储的字符类型就是使用Unicodc编码

UTF-8是针对Unicode的可变长编码,可以用来表示Unicode标准中的任何字符,其中,英文占1个字节,中文占3个字节,这是程序开发中最常用的字符码表。06

字符编码字符编码和解码:在Java编程中,经常会出现字符转换为字节或者字节转换为字符的操作,这两种操作涉及到两个概念,编码(Encode)和解码(Decode)。一般来说,把字符串转换成计算机识别的字节序列称为编码,而把字节序列转换为普通人能看懂的明文字符串称为解码,在计算机程序中,如果要把字节数组转换为字符串,可以通过String类的构造方法String(byte[]

bytes,Charset

charset)把字节数组按照指定的码表解码成字符串(如果没有指定字符码表,则用操作系统默认的字符码表,如中文的Windows系统默认使用的字符码表是GBK)反之,可以通过使用String类中的getBytes(Charset

charset)方法把字符串按照指定的码表编码成字节数组。案例如下:publicclassDemo14{

publicstatic

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论