数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input输出output ,即流向内存是输入流,流出内存的输出流。

Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。

根据数据的流向分为:输入流输出流

  • 输入流 :把数据从其他设备上读取到内存中的流。
  • 输出流 :把数据从内存 中写出到其他设备上的流。

格局数据的类型分为:字节流字符流

  • 字节流 :以字节为单位,读写数据的流。
  • 字符流 :以字符为单位,读写数据的流。

1 字节流

1.1 字节输出流(OutputStream)

java.io.OutputStream抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字节输出流的基本共性功能方法。

  • public void close() :关闭此输出流并释放与此流相关联的任何系统资源。
  • public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
  • public void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流。
  • public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
  • public abstract void write(int b) :将指定的字节输出流。

close方法,当完成流的操作时,必须调用此方法,释放系统资源。

1.1.1 FileOutputStream

java.io.FileOutputStream类是文件输出流,用于将数据写出到文件,是OutputStream的子类。

构造方法

  • public FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件。
  • public FileOutputStream(String name): 创建文件输出流以指定的名称写入文件。

当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有这个文件,会创建该文件。如果有这个文件,会清空这个文件的数据。

构造方法的作用:
1.创建一个FileOutputStream对象
2.会根据构造方法中传递的文件/文件路径,创建一个空的文件
3.会把FileOutputStream对象指向创建好的文件

写入数据的原理(内存-->硬盘)java程序-->JVM(java虚拟机)-->OS(操作系统)-->OS调用写数据的方法-->把数据写入到文件中字节输出流的使用步骤(重点):1.创建一个FileOutputStream对象,构造方法中传递写入数据的目的地2.调用FileOutputStream对象中的方法write,把数据写入到文件中3.释放资源(流使用会占用一定的内存,使用完毕要把内存清空,提供程序的效率)

写出字节write(int b) 方法,每次可以写出一个字节数据。
写出字节数组write(byte[] b),每次可以写出数组中的数据。
写出指定长度字节数组write(byte[] b, int off, int len) ,每次写出从off索引开始,len个字节。

数据追加续写

  • public FileOutputStream(File file, boolean append): 创建文件输出流以写入由指定的 File对象表示的文件。
  • public FileOutputStream(String name, boolean append): 创建文件输出流以指定的名称写入文件。

这两个构造方法,参数中都需要传入一个boolean类型的值,true 表示追加数据,false 表示清空原有数据。这样创建的输出流对象,就可以指定是否追加续写了。

代码运行如下

public class Demo02OutputStream {public static void main(String[] args) throws IOException {//创建FileOutputStream对象,构造方法中绑定要写入数据的目的地FileOutputStream fos = new FileOutputStream(new File("E:\\java\\JavaseBase02\\day15\\b.txt"));//调用FileOutputStream对象中的方法write,把数据写入到文件中fos.write(49);fos.write(48);fos.write(49);/*public void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流。一次写多个字节:如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表如果写的第一个字节是负数,那第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK)*/byte[] bytes = {65,66,67,68,69};fos.write(bytes);fos.write(bytes,1,2);/*写入字符的方法:可以使用String类中的方法把字符串,转换为字节数组byte[] getBytes()  把字符串转换为字节数组*/byte[] bytes2 = "你好".getBytes();System.out.println(Arrays.toString(bytes2));fos.write(bytes2);//释放资源fos.close();}
}

运行结果如图
在这里插入图片描述

1.2 字节输入流(InputStream)

java.io.InputStream抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。它定义了字节输入流的基本共性功能方法。

  • public void close() :关闭此输入流并释放与此流相关联的任何系统资源。
  • public abstract int read(): 从输入流读取数据的下一个字节。
  • public int read(byte[] b): 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。

close方法,当完成流的操作时,必须调用此方法,释放系统资源。

1.1.2 FileInputStream

java.io.FileInputStream类是文件输入流,从文件中读取字节。

构造方法

  • FileInputStream(File file): 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。
  • FileInputStream(String name): 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。

当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有该文件,会抛出FileNotFoundException

读取字节read方法,每次可以读取一个字节的数据,提升为int类型,读取到文件末尾,返回-1
使用字节数组读取read(byte[] b),每次读取b的长度个字节到数组中,返回读取到的有效字节个数,读取到末尾时,返回-1

代码运行如下:


/*    文件复制的步骤:1.创建一个字节输入流对象,构造方法中绑定要读取的数据源2.创建一个字节输出流对象,构造方法中绑定要写入的目的地3.使用字节输入流对象中的方法read读取文件4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中5.释放资源*/
public class Demo01CopyFile {public static void main(String[] args) throws IOException {long s = System.currentTimeMillis();//1.创建一个字节输入流对象,构造方法中绑定要读取的数据源FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Pictures\\Saved Pictures\\source code.png");//2.创建一个字节输出流对象,构造方法中绑定要写入的目的地FileOutputStream fos = new FileOutputStream("E:\\Source code.png");//一次读取一个字节写入一个字节的方式//3.使用字节输入流对象中的方法read读取文件/*  int len = 0;while((len = fis.read()) != -1){//4.使用字节输出流中的方法write,把读取到的字节写入到目的地的文件中fos.write(len);}*///使用数组缓冲读取多个字节,写入多个字节byte[] bytes = new byte[1024];//3.使用字节输入流对象中的方法read读取文件int len = 0;  //while((len = fis.read(bytes)) != -1){fos.write(bytes, 0 ,len);}//5.释放资源(先关写的,后关读的;如果写完了,肯定读取完毕了)fis.close();fos.close();long e = System.currentTimeMillis();System.out.println("复制文件共耗时:"+(e-s)+"毫秒");}
}

运行结果如图

在这里插入图片描述

2 字符流

当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。

2.1 字符输入流(Reader)

java.io.Reader抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。它定义了字符输入流的基本共性功能方法。

  • public void close() :关闭此流并释放与此流相关联的任何系统资源。
  • public int read(): 从输入流读取一个字符。
  • public int read(char[] cbuf): 从输入流中读取一些字符,并将它们存储到字符数组 cbuf中 。

2.1.1 FileReader

java.io.FileReader类是读取字符文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。

  1. 字符编码:字节与字符的对应规则。Windows系统的中文编码默认是GBK编码表。

  2. idea中默认UTF-8编码表

  3. 字节缓冲区:一个字节数组,用来临时存储字节数据。

构造方法

  • FileReader(File file): 创建一个新的 FileReader ,给定要读取的File对象。
  • FileReader(String fileName): 创建一个新的 FileReader ,给定要读取的文件的名称。

当你创建一个流对象时,必须传入一个文件路径。类似于FileInputStream .

构造方法:FileReader(String fileName)FileReader(File file)参数:读取文件的数据源String fileName:文件的路径File file:一个文件FileReader构造方法的作用:1.创建一个FileReader对象2.会把FileReader对象指向要读取的文件
字符输入流的使用步骤:1.创建FileReader对象,构造方法中绑定要读取的数据源2.使用FileReader对象中的方法read读取文件3.释放资源

读取字符read方法,每次可以读取一个字符的数据,提升为int类型,读取到文件末尾,返回-1,循环读取。
使用字符数组读取read(char[] cbuf),每次读取b的长度个字符到数组中,返回读取到的有效字符个数,读取到末尾时,返回-1

代码运行如下

public class Demo02Reader {public static void main(String[] args) throws IOException {//1.创建FileReader对象,构造方法中绑定要读取的数据源FileReader fr = new FileReader("E:\\java\\JavaseBase02\\day15\\b.txt");//2.使用FileReader对象中的方法read读取文件/*int len = 0;while((len = fr.read()) != -1){System.out.print((char)len);}*/char[] bytes = new char[1024];int len = 0;while((len = fr.read(bytes)) != -1){System.out.print(new String(bytes,0,len));}//3.释放资源fr.close();}
}

运行结果如图
在这里插入图片描述

2.2 字符输出流(Writer)

java.io.Writer抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。它定义了字节输出流的基本共性功能方法。

  • void write(int c) 写入单个字符。
  • void write(char[] cbuf)写入字符数组。
  • abstract void write(char[] cbuf, int off, int len)写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
  • void write(String str)写入字符串。
  • void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
  • void flush()刷新该流的缓冲。
  • void close() 关闭此流,但要先刷新它。

2.2.1 FileWriter

java.io.FileWriter类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。

构造方法

  • FileWriter(File file): 创建一个新的 FileWriter,给定要读取的File对象。
  • FileWriter(String fileName): 创建一个新的 FileWriter,给定要读取的文件的名称。

当你创建一个流对象时,必须传入一个文件路径,类似于FileOutputStream。

写出字符write(int b) 方法,每次可以写出一个字符数据。

关闭和刷新

因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据的。如果我们既想写出数据,又想继续使用流,就需要flush 方法了。

  • flush :刷新缓冲区,流对象可以继续使用。
  • close:先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。

写出字符数组write(char[] cbuf)write(char[] cbuf, int off, int len) ,每次可以写出字符数组中的数据,用法类似FileOutputStream。

写出字符串write(String str)write(String str, int off, int len) ,每次可以写出字符串中的数据,更为方便。

代码运行如下

public class Demo03Writer {public static void main(String[] args) throws IOException {FileWriter fw = new FileWriter("E:\\java\\JavaseBase02\\day15\\a.txt");char[] chars = {'a','b','c','d','e'};fw.write(chars);fw.flush();fw.write(chars,0,3);fw.flush();fw.write("\r\n");fw.write("你好java");fw.write("你好java",0,5);fw.close();}
}

运行结果如图
在这里插入图片描述

2.3 IO异常的处理

2.3.1 JDK7前处理

代码运行如下

/*在jdk1.7之前使用try catch finally 处理流中的异常格式:try{可能会产出异常的代码}catch(异常类变量 变量名){异常的处理逻辑}finally{一定会指定的代码资源释放}*/
public class Demo01TryCatch {public static void main(String[] args) throws IOException {//提高变量fw的作用域,让finally可以使用//变量在定义的时候,可以没有值,但是使用的时候必须有值//fw = new FileWriter("09_IOAndProperties\\g.txt",true); 执行失败,fw没有值,fw.close会报错FileWriter fw = null;try {fw = new FileWriter("E:\\java\\JavaseBase02\\day15\\a.txt");for (int i = 0; i < 10; i++) {//可能会产出异常的代码fw.write("HwlloWorld" + i + "\r\n");}}catch (IOException e) {//异常的处理逻辑e.printStackTrace();}finally {//一定会指定的代码//创建对象失败了,fw的默认值就是null,null是不能调用方法的,会抛出NullPointerException,需要增加一个判断,不是null在把资源释放if(fw != null){try {fw.close();//fw.close方法声明抛出了IOException异常对象,所以我们就的处理这个异常对象,要么throws,要么try catch} catch (IOException e) {e.printStackTrace();}}}}
}

2.3.2 JDK后前处理

代码运行如下

/*JDK7的新特性在try的后边可以增加一个(),在括号中可以定义流对象那么这个流对象的作用域就在try中有效try中的代码执行完毕,会自动把流对象释放,不用写finally格式:try(定义流对象;定义流对象....){可能会产出异常的代码}catch(异常类变量 变量名){异常的处理逻辑}*/
public class Demo02JDK7 {public static void main(String[] args) {try{//1.创建一个字节输入流对象,构造方法中绑定要读取的数据源FileInputStream fis = new FileInputStream("E:\\java\\JavaseBase02\\day15\\a.txt");//2.创建一个字节输出流对象,构造方法中绑定要写入的目的地FileOutputStream fos = new FileOutputStream("E:\\b.txt");//可能会产出异常代码//一次读取一个字节写入一个字节的方式//3.使用字节输入流对象中的方法read读取文件int len = 0;while((len = fis.read()) != -1){fos.write(len);}}catch (IOException e){e.printStackTrace();}}
}

3 缓冲流

缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类:

  • 字节缓冲流BufferedInputStreamBufferedOutputStream
  • 字符缓冲流BufferedReaderBufferedWriter

缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。

3.1 字节缓冲流

构造方法

  • public BufferedInputStream(InputStream in) :创建一个 新的缓冲输入流。
  • public BufferedOutputStream(OutputStream out): 创建一个新的缓冲输出流。

效率测试代码运行如下

package Demo01;import java.io.*;/*
读写文件效率测试
*/
public class Demo05Tes01 {public static void main(String[] args) {show01();show02();show03();}private static void show03() {//记录开始时间long start = System.currentTimeMillis();//创建流对象try(BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\Source code.png"));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\SourceCode3.png"));){//读写数据byte[] bytes = new byte[1024];int len = 0;while((len = bis.read(bytes)) != -1){bos.write(bytes,0,len);}}catch (IOException e){e.printStackTrace();}//记录结束时间long end = System.currentTimeMillis();System.out.println("缓冲流使用数组复制时间:"+(end - start)+"毫秒");}private static void show02() {//缓冲流//记录开始时间long start = System.currentTimeMillis();//创建流对象try(BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\Source code.png"));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\SourceCode2.png"));){//读写数据int len = 0;while((len = bis.read()) != -1){bos.write(len);}}catch (IOException e){e.printStackTrace();}//记录结束时间long end = System.currentTimeMillis();System.out.println("缓冲流复制时间:"+(end - start)+"毫秒");System.out.println("=====================================");}private static void show01() {//基本流//记录开始时间long start = System.currentTimeMillis();//创建流对象try(FileInputStream fis = new FileInputStream("E:\\Source code.png");FileOutputStream fos = new FileOutputStream("C:\\SourceCode1.png");){int len = 0;while((len = fis.read()) != -1){fos.write(len);}}catch (IOException e){e.printStackTrace();}//记录结束时间long end = System.currentTimeMillis();System.out.println("普通流复制时间:"+(end - start)+"毫秒");System.out.println("=====================================");}
}

运行结果如图

在这里插入图片描述

3.2 字符缓冲流

  • public BufferedReader(Reader in) :创建一个 新的缓冲输入流。
  • public BufferedWriter(Writer out): 创建一个新的缓冲输出流。

特有方法

字符缓冲流的基本方法与普通字符流调用方式一致,不再阐述,我们来看它们具备的特有方法。

  • BufferedReader:public String readLine(): 读一行文字。
  • BufferedWriter:public void newLine(): 写一行行分隔符,由系统属性定义符号。

代码运行如下

package Demo01;import java.io.*;
import java.util.HashMap;/*练习:对文本的内容进行排序按照(1,2,3....)顺序排序分析:1.创建一个HashMap集合对象,可以:存储每行文本的序号(1,2,3,..);value:存储每行的文本2.创建字符缓冲输入流对象,构造方法中绑定字符输入流3.创建字符缓冲输出流对象,构造方法中绑定字符输出流4.使用字符缓冲输入流中的方法readline,逐行读取文本5.对读取到的文本进行切割,获取行中的序号和文本内容6.把切割好的序号和文本的内容存储到HashMap集合中(key序号是有序的,会自动排序1,2,3,4..)7.遍历HashMap集合,获取每一个键值对8.把每一个键值对,拼接为一个文本行9.把拼接好的文本,使用字符缓冲输出流中的方法write,写入到文件中10.释放资源*/
public class Demo06Test02 {public static void main(String[] args) throws IOException {//1.创建一个HashMap集合对象,key:存储每行文本的序号(1,2,3...);value:存储每行的文本HashMap<String ,String> map = new HashMap<>();//2.创建字符缓冲输入流对象,构造方法中绑定字符流入流BufferedReader br = new BufferedReader(new FileReader("day16\\in.txt"));//3.创建字符缓冲输出流对象,构造方法中绑定字符输出流BufferedWriter bw = new BufferedWriter(new FileWriter("day16\\out.txt"));//4.使用字符缓冲输入流中的方法readLine,逐行读取文本String line;while((line = br.readLine()) != null){//5.对读取到的文本进行切割,获取行中的序号和文本内容String[] arr = line.split("\\.");//6.把切割好的序号和文本的内容存储到HashMap集合中(key序号是有序的,会自动排序1,2,3,4...)map.put(arr[0], arr[1]);}//7.遍历HashMap集合,获取每个键值对for (String key :map.keySet()) {String value = map.get(key);//8.把每个键值对,拼接为一个文本行line = key + "." + value;//9.把拼接好的文本,使用字符缓冲输出流中的方法wirte,写入到文件中bw.write(line);bw.newLine();}//10.释放资源bw.close();br.close();}
}

运行结果如图
在这里插入图片描述

4 转换流

字符编码

计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码 。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。

编码:字符(能看懂的)–字节(看不懂的)

解码:字节(看不懂的)–>字符(能看懂的)

  • 字符编码Character Encoding : 就是一套自然语言的字符与二进制数之间的对应规则。

    编码表:生活中文字和计算机中二进制的对应规则

字符集

  • 字符集 Charset:也叫编码表。是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。

计算机要准确的存储和识别各种字符集符号,需要进行字符编码,一套字符集必然至少有一套字符编码。常见字符集有ASCII字符集、GBK字符集、Unicode字符集等。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WfNbwJ6a-1593607966410)(img/1_charset.jpg)]

可见,当指定了编码,它所对应的字符集自然就指定了。

4.1 InputStreamReader

转换流java.io.InputStreamReader,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。

构造方法

  • InputStreamReader(InputStream in): 创建一个使用默认字符集的字符流。
  • InputStreamReader(InputStream in, String charsetName): 创建一个指定字符集的字符流。

使用步骤:

    1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称2.使用InputStreamReader对象中的方法read读取文件3.释放资源注意事项:构造方法中指定的编码表名称要和文件的编码相同,否则会发生乱码

指定编码读取代码运行如下

public class Demo03InputStreamReader {public static void main(String[] args) throws IOException {read_utf_8();read_gbk();}private static void read_gbk() throws IOException {//1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称InputStreamReader isr = new InputStreamReader(new FileInputStream("day16\\我是GBK格式的文本.txt"),"GBK");//2.使用InputStreamReader对象中的方法read读取文件int len = 0;while((len = isr.read()) != -1){System.out.print((char)len);}//3.释放资源isr.close();}/*使用InputStreamReader读取UTF-8格式的文件*/private static void read_utf_8() throws IOException {//1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称InputStreamReader isr = new InputStreamReader(new FileInputStream("day16\\我是utf_8格式的文件.txt"));//2.使用InputStreamReader对象中的方法read读取文件int len = 0;while((len = isr.read()) != -1){System.out.print((char)len);}//3.释放资源isr.close();System.out.println("\n===========================");}
}

运行结果如图

在这里插入图片描述

4.2 OutputStreamReader

转换流java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。

构造方法

  • OutputStreamWriter(OutputStream in): 创建一个使用默认字符集的字符流。
  • OutputStreamWriter(OutputStream in, String charsetName): 创建一个指定字符集的字符流。

代码运行如下

/*练习:转换文件编码将GBK编码的文本文件,转换为UTF-8编码的文本文件。分析:1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称GBK2.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称UTF-83.使用InputStreamReader对象中的方法read读取文件4.使用OutputStreamWriter对象中的方法write,把读取的数据写入到文件中5.释放资源*/
public class Demo04Test {public static void main(String[] args) throws IOException {//1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称GBKInputStreamReader isr = new InputStreamReader(new FileInputStream("day16\\我是GBK格式的文本.txt"),"GBK");//2.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称UTF-8OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("day16\\我是UTF-8格式的文本.txt"),"UTF-8");//3.使用InputStreamReader对象中的方法read读取文件int len = 0;while((len = isr.read()) != -1){//4.使用OutputStreamWriter对象中的方法write,把读取的数据写入到文件中osw.write(len);}// 5.释放资源osw.close();isr.close();}
}

运行结果如图

在这里插入图片描述

转换流是字节与字符间的桥梁!
在这里插入图片描述

5 对象流

Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据对象的类型对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。

反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化对象的数据对象的类型对象中存储的数据信息,都可以用来在内存中创建对象。看图理解序列化:
在这里插入图片描述

5.1 ObjectOutputStream

java.io.ObjectOutputStream 类,将Java对象的原始数据类型写出到文件,实现对象的持久存储。

构造方法

  • public ObjectOutputStream(OutputStream out): 创建一个指定OutputStream的ObjectOutputStream。

构造举例,代码如下:

FileOutputStream fileOut = new FileOutputStream("java.txt");
ObjectOutputStream out = new ObjectOutputStream(fileOut);

序列化操作

  1. 一个对象要想序列化,必须满足两个条件:
  • 该类必须实现java.io.Serializable 接口,Serializable 是一个标记接口,不实现此接口的类将不会使任何状态序列化或反序列化,会抛出NotSerializableException
  • 该类的所有属性必须是可序列化的。如果有一个属性不需要可序列化的,则该属性必须注明是瞬态的,使用transient 关键字修饰。

2.写出对象方法

  • public final void writeObject (Object obj) : 将指定的对象写出。

5.2 ObjectInputStream

ObjectInputStream反序列化流,将之前使用ObjectOutputStream序列化的原始数据恢复为对象。

构造方法

  • public ObjectInputStream(InputStream in): 创建一个指定InputStream的ObjectInputStream。

反序列化操作1

如果能找到一个对象的class文件,我们可以进行反序列化操作,调用ObjectInputStream读取对象的方法:

  • public final Object readObject () : 读取一个对象。

注意
对于JVM可以反序列化对象,它必须是能够找到class文件的类。如果找不到该类的class文件,则抛出一个 ClassNotFoundException 异常。

反序列化操作2

当JVM反序列化对象时,能找到class文件,但是class文件在序列化对象之后发生了修改,那么反序列化操作也会失败,抛出一个InvalidClassException异常。**发生这个异常的原因如下:

  • 该类的序列版本号与从流中读取的类描述符的版本号不匹配
  • 该类包含未知数据类型
  • 该类没有可访问的无参数构造方法

Serializable 接口给需要序列化的类,提供了一个序列版本号。serialVersionUID 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。

序列化集合代码如下

/*练习:序列化集合当我们想在文件中保存多个对象的时候可以把多个对象存储到一个集合中对集合进序列化和反序列化分析:1.定义一个存储Person对象的ArrayList集合2.往ArrayList集合中存储Person对象3.创建一个序列化流ObjectOutputStream对象4.使用ObjectOutputStream对象中的方法writeObject,对集合进行序列化5.创建一个反序列化ObjectInputStream对象6.使用ObjectInputStream对象中的方法readObject读取文件中保存的集合7.把Object类型的集合转换为ArrayList类型8.遍历ArrayList集合9.释放资源*/
public class Demo03Test {public static void main(String[] args) throws IOException, ClassNotFoundException {//1.定义一个存储Person对象的ArrayList集合ArrayList<Person> list = new ArrayList<>();//2.往ArrayList集合中存储Person对象list.add(new Person("张三",18));list.add(new Person("李四",19));list.add(new Person("王五",20));//3.创建一个序列化流ObjectOutputStream对象ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("day16\\list.txt"));//4. 使用ObjectOutputStream对象中的方法writeObject,对集合进行序列化oos.writeObject(list);//5.创建一个反序列化ObjectInputStream对象ObjectInputStream ois = new ObjectInputStream(new FileInputStream("day16\\list.txt"));//6.使用ObjectInputStream对象中的方法readObject读取文件中保存的集合Object o = ois.readObject();//7.把Object类型的集合转换为ArrayList类型ArrayList<Person> list2 = (ArrayList<Person>)o;//8.遍历ArrayList集合for (Person p :list2) {System.out.println(p);}//9.释放资源ois.close();oos.close();}
}public class Person implements Serializable {private static final long serialVersionUID = 1L;private String name ;private int age;public Person() {}Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

运行结果如图
在这里插入图片描述

6 打印流

平时我们在控制台打印输出,是调用print方法和println方法完成的,这两个方法都来自于java.io.PrintStream类,该类能够方便地打印各种数据类型的值,是一种便捷的输出方式。

6.1 PrintStream类

构造方法

  • public PrintStream(String fileName): 使用指定的文件名创建一个新的打印流。

如果使用继承自父类的write方法写数据,那么查看数据的时候会查询编码表 97->a
如果使用自己特有的方法print/println方法写数据,写的数据原样输出 97->97

使用System.setOut方法改变输出语句的目的地改为参数中传递的打印流的目的地, 输出语句,默认在控制台输出
static void setOut(PrintStream out)
重新分配“标准”输出流。

代码运行如下

public class Demo01PrintStream {public static void main(String[] args) throws FileNotFoundException {show01();show02();}private static void show02() throws FileNotFoundException {System.out.println("我是在控制台输出的~");PrintStream ps = new PrintStream("day16\\print.txt");System.setOut(ps);//把输出语句的目的地改变为打印流的目的地System.out.println("我在打印流的目的地中输出");ps.close();}public static void show01() throws FileNotFoundException {//创建打印流PrintStream对象,构造方法中绑定要输出的目的地PrintStream ps = new PrintStream("day16\\print.txt");//如果使用继承父类write方法写数据,那么查看数据的时候会查询编码表ps.write(97);//如果使用自己特有的方法print/println写数据,写的数据会原样输出ps.println(97);ps.println("Hello Java");}
}

运行结果如图
在这里插入图片描述

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Java网络编程

    端口号范围:0~65535,建议选择1024以上 UDP:面向无连接,数据不安全,速度快,不区分客户端和服务器(有发送端和接收端)(发短信) TCP:面向连接(三次握手),数据安全,速度略低,分为客户端和服务器(打电话) 1.UDP package day26;import java.io.IOException; import…...

    2024/4/16 16:23:17
  2. React基本使用 - props与state、React事件

    1、props 父组件传过来的参数 可以使用组件类的defaultProps属性,设置默认的props值 // Actor.js import React,{Component} from react; export default class Actor extends Component{render(){return (<div>hi, {this.props.name} - {this.props.works}</div>…...

    2024/3/31 23:46:01
  3. MySQL--02(安装)

    A:MySQL的安装 Linux/UNIX 上安装 MySQL Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址: 1.MySQL - MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。 2.MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器…...

    2024/4/16 16:23:32
  4. 海思NNIE开发系列文章--转载

    https://blog.csdn.net/zh8706/article/details/94554337海思NNIE开发系列文章:海思NNIE开发(一):海思Hi3559AV100/Hi3519AV100 NNIE深度学习模块开发与调试记录海思NNIE开发(二):FasterRCNN在海思NNIE平台上的执行流程(一)海思NNIE开发(三):FasterRCNN在海思NNIE平…...

    2024/4/16 16:24:18
  5. 内网渗透 -- 获取内网浏览器历史记录等相关信息

    “我喜欢你,做我女朋友可以吗?”电话的那头没有反应,男生沉不住气了,小心翼翼地问着,“你在干嘛呀?”“我在点头。”---- 网易云热评环境:小攻:Kali 2020,ip:192.168.1.133小受:win7 x86,ip:192.168.1.137一、生成木马及监听主机参考上篇文章:二、获取浏览器历史…...

    2024/4/20 5:02:15
  6. 集合类

    Collection集合: 集合是Java提供的一种容器,可以用来存储多个数据。数组也是容器,但是数组的长度是固定的,集合的长度是可变的 数组中存储的都是同一类型的元素,可以存储基本数据类型的值;集合存储的都是对象,而且对象的类型可以不一致。 在开发中,一般对象多的时候,使…...

    2024/4/16 16:24:18
  7. 理解Python interned objects

    关键字 sys.intern()ReferencePointers in Python: What’s the Point?...

    2024/4/16 16:24:59
  8. cpu寻址问题

    20根地址线,16根数据线,cpu按字节编址和按字编址的寻址范围,分别是1M和512k,但是16根数据线,表明一次向存储单元读写位数16位,那为什么按字编址会是512k而不是1M呢,请解答一下,谢谢...

    2024/4/16 16:24:54
  9. SSM项目所需的配置文件

    整合SSM框架或者用SSM写项目时所需要的文件 spring中的applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSc…...

    2024/3/31 23:45:52
  10. 一起Talk Android吧(第二百五十五回:Android中的Toolbar标题一)

    各位看官们大家好,上一回中咱们说的是Android中Toolbar的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,我们在前面章回中介绍完了Toolbar的导航,本章回中将介绍Toolbar的标题。标题位于导航右侧,用来提示程序的内容或者当前页面的…...

    2024/4/16 16:25:05
  11. docker常用简单命令

    检查内核版本 uname -r 如果内核版本小于3.10执行 yum update 安装docker yum install docker 启动docker systemctl start docker 查看docker版本 docker -v 开机自启动docder systemctl enable docker 停止docker systemctl stop docker ///////////////////////////////////…...

    2024/4/16 16:24:49
  12. kuangbin专题8 生成树 次小生成树部分 HDU4081/UVA10600/UVA10462

    前言 本来壮志凌云的想都做完 发现我在做梦。。。 朱刘算法太难了(自己太懒发现性价比比较低之后就没做而且算法介绍也太难懂了好几个关键词含义都不给简直简直太难了我枯 HDU4081 Qin Shi Huang’s National Road System 题意:给你一个图的各个点的坐标 再给你每个点的权值…...

    2024/4/16 16:24:33
  13. Java工厂模式解耦合的例子

    目录第一个例子第二个例子第三个例子第四个例子Reference 最终项目路径如下:第一个例子 假设有如下接口, package service;public interface Notice {public void work(String message); }实现类如下, package service;public class NoticeImpl implements Notice {@Overrid…...

    2024/4/16 16:24:54
  14. 前端未来技术走向(TS, SSR, serverless, flutter,多端统一开发)

    TS TS为什么会出现? 1.js是一门弱类型而且还是动态类型的语言,语言本身的类型系统是非常薄弱的,当js去开发大型的前端项目,开发成本和维护成本都会非常的高2.而ts是一门基于js基础之上的编程语言,它在javascript原有的基础之上多了一些扩展特性,主要就是一套更强大的类型…...

    2024/4/16 18:21:52
  15. Adobe中英文转换--------2017版本之前(包括2017版本)

    Adobe中英文转换--------2017版本之前(包括2017版本) 在安装根目录下 *Program Files\Adobe\Adobe After Effects CC 2017\Support Files 此文件加下找到painter.ini配置文件。在@Adobe ID之后加入一下代码,中英文转换 ForceLanguage=1 Language=en_US ForceLanguage=1 Lang…...

    2024/4/16 16:25:20
  16. linux重要知识清单:进程管理

    相关的系统调度fork(): 用于创建进程,Linux中进程的创建者与被创建者是父子关系clone():克隆,真正实现创建进程的操作,fork()是不带参数的,clone()是带参数的,通过不同的参数后,可以不仅仅做fork(),也能做其他的创建进程的方式exec():加载外部存储器的一段代码,把一个可…...

    2024/4/16 16:26:01
  17. 如何创建MySQL存储过程,这是一个问题!且看大佬如何整理剖析

    简单地说,存储过程就是一条或者多条SQL语句的集合,可视为批文件,但是其作用不仅限于批处理。本篇主要介绍如何创建存储过程和存储函数以及变量的使用,如何调用、查看、修改、删除存储过程和存储函数等。存储程序可以分为存储过程和函数,MySQL 中创建存储过程和函数使用的语…...

    2024/4/16 16:24:54
  18. free_spirit(在栈上爆破一个可以被free的fake_chunk)

    free_spirit(在栈上爆破一个可以被free的fake_chunk)首先检查一下程序的保护机制然后,我们用IDA分析一下,功能3存在8字节溢出,将会把v7下面的buf指针覆盖掉,而覆盖了buf指针,就能实现任意地址写。那么,我们劫持函数栈返回地址为one_gadget即可,为了绕过结尾对buf的检查…...

    2024/4/16 16:25:05
  19. datawhale-综合练习题目

    这两天考试多,休息的时间也没有,等我考完再重新做回来,等我!...

    2024/4/18 19:40:42
  20. javascript正则表达式写法

    var tempPrice=parseFloat($("#ChangePriceValue").val() ) ;var reg = new RegExp(/^\d+$/);if (!reg.test(tempPrice)) {{$("#ChangePriceValue").val("0");window.alert("你还没有填写价格");return;}}...

    2024/4/19 14:30:44

最新文章

  1. 将Linux命令存为shell脚本

    要将给定的命令保存为一个 shell 脚本文件&#xff0c;你可以按照以下步骤进行操作&#xff1a; 打开一个文本编辑器&#xff0c;比如 nano 或 vim。将以下命令粘贴到文本编辑器中&#xff1a; #!/bin/bashfind . -type f -name "*.xlsx" -exec tar -cvf xlsx_file…...

    2024/4/20 8:22:21
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 方案分享 | 嵌入式指纹方案

    随着智能设备的持续发展&#xff0c;指纹识别技术成为了现在智能终端市场和移动支付市场中占有率最高的生物识别技术。凭借高识别率、短耗时等优势&#xff0c;被广泛地运用在智能门锁、智能手机、智能家居等设备上。 我们推荐的品牌早已在2015年进入指纹识别应用领域&#xff…...

    2024/4/16 10:23:30
  4. 3d representation的一些基本概念

    顶点&#xff08;Vertex&#xff09;&#xff1a;三维空间中的一个点&#xff0c;可以有多个属性&#xff0c;如位置坐标、颜色、纹理坐标和法线向量。它是构建三维几何形状的基本单元。 边&#xff08;Edge&#xff09;&#xff1a;连接两个顶点形成的直线段&#xff0c;它定…...

    2024/4/19 5:59:16
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/19 14:24:02
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/19 18:20:22
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/19 11:57:31
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/19 11:57:31
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/19 11:57:52
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/19 11:57:53
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/19 11:58:14
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/19 11:58:20
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/20 7:40:48
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/19 11:58:39
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/19 11:58:51
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/20 3:12:02
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/19 11:59:15
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/19 11:59:23
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/19 11:59:44
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/19 11:59:48
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/19 12:00:06
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/19 16:57:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/19 12:00:25
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/19 12:00:40
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57