杭州建设企业网站超市网站怎么做的

当前位置: 首页 > news >正文

杭州建设企业网站,超市网站怎么做的,长沙专业seo优化推荐,做蓝牙app的网站目录 一、什么是数据流 二、InputStream概述 2.1、方法 2.2、说明 三、FileInputStream概述 3.1、构造方法
3.2、利用Scanner进行字符串读取#xff0c;简化操作
四、OutputStream概述
4.1、方法
4.2、PrinterWriter简化写操作 五、小程序练习
示例1
示例…目录 一、什么是数据流 二、InputStream概述 2.1、方法 2.2、说明 三、FileInputStream概述 3.1、构造方法  3.2、利用Scanner进行字符串读取简化操作  四、OutputStream概述   4.1、方法  4.2、PrinterWriter简化写操作 五、小程序练习  示例1  示例2  一、什么是数据流 对照我们的现实生活可以想象成流水。 流的输入(读)和流的输出(写)针对于内存来说的从设备包括硬盘网卡的数据进入内存叫输入(Input)从内存把数据写到硬盘网卡叫输出(Output) 。 Java中针对input和Output提供了两个抽象类 InputStream输入流从文件中把数据读取到内存。OutputStream输出流把数据从内存输出到文件。  二、InputStream概述 2.1、方法 修饰符以及返回值类型方法签名说明int read()读取一个字节的数据返回-1代表已经完全读完了.intread(byte[] b)最多读取b.length自己的数据到b中返回实际读到的数量-1代表已经读完了.intread(byte[] b,int off,int len)最多读取len-off字节的数据到b中放在off开始返回实际读到的数量-1代表已经读完了.voidclose()关闭字节流 2.2、说明 InputStream只是一个抽象类要使用还是需要具体的实现类。关于InputStream的实现类有很多基本可以认为不同的输入设备都可以对应一个InputStream类本篇博客只讲从文件中读取所以使用FileInputStream。 三、FileInputStream概述 3.1、构造方法  签名说明FileInputStream(File file)利用File对象构造文件输入流FileInputStream(String name)利用文件路径构造文件输入流 示例1  import java.io.FileInputStream; import java.io.IOException;/*** 创建一个输入流读取文件内容/ public class Exe_01 {public static void main(String[] args) throws IOException {FileInputStream inputStreamnew FileInputStream(C:/Temp/Hello.txt);//创建一个byte数组来接收每次读取的内容扩大缓冲区的容量byte[] bytesnew byte[1024];//循环读取while(true){//获取每次读取的长度int leninputStream.read(bytes);//如果等于-1就说明读完了if(len-1){break;}//打印读取的内容for (int i 0; i len; i) {System.out.print(bytes[i],);}}//关闭数据流inputStream.close();} }3.2、利用Scanner进行字符串读取简化操作  上述例子中我们看到了对字符类型直接使用 InputStream 进行读取是非常麻烦且困难的所以我们使用一种我们之前比较熟悉的类来完成该工作就是 Scanner 类 。 示例2  import java.io.FileInputStream; import java.io.IOException; import java.util.Scanner;public class Exe_05 {public static void main(String[] args) throws IOException {//创建一个流FileInputStream inputStreamnew FileInputStream(C:/Temp/基尼太美.txt);//使用Scanner简化操作Scanner scnew Scanner(inputStream,UTF-8);//循环读取while(true){//判断if(!sc.hasNextLine()){break;}String strsc.nextLine();System.out.println(str);}sc.close();inputStream.close();} }四、OutputStream概述   4.1、方法  修饰符及返回值类型方法签名说明voidwrite(int b)写入要给字节的数据void write(byte[] b)将b这个字符数组中的数据全部写道os中int write(byte[] b,int off,int len)将b这个字符数组从off开始的数据写到os中一共写len个voidclose()关闭字节流void flush()重要I/O的速度是很慢的所以大多的OutputStream为了减少设备操作的次数在写数据的时候都会将数据先暂时的写入到内存的一个指定区域里面知道该区域满了或者其它指定条件时才真正的将数据写入到设备中这个区域就叫缓冲区。但这样会造成一个结果就是我们写的数据很有可能一部分留在缓冲区中。所以需要在最后或者合适的位置调用flush(刷新)操作将数据刷到设备中。 说明 OutputStream同样只是一个抽象类要使用还需要具体的实现类。跟上述一样本篇博客只讲从文件中读取所以使用FileOutputStream。 示例3 import java.io.FileOutputStream; import java.io.IOException;public class Exe_02 {public static void main(String[] args) throws IOException {//创建一个输出流FileOutputStream outputStreamnew FileOutputStream(C:/Temp/基尼太美.txt);//在文件中写入一些内容outputStream.write(189);outputStream.write(188);outputStream.write(187);outputStream.write(186);//刷新一下缓冲区outputStream.flush();//关闭流outputStream.close();} }运行结果  import java.io.FileInputStream; import java.io.IOException;public class Exe_03 {public static void main(String[] args) throws IOException {FileInputStream inputStreamnew FileInputStream(C:/Temp/基尼太美.txt);while(true){int datainputStream.read();if(data-1){//返回-1读取结束break;}System.out.println(data);}//关闭流inputStream.close();} }示例4 import java.io.FileWriter; import java.io.IOException;/** 基于字符的输出流*/ public class Exe_04 {public static void main(String[] args) throws IOException {FileWriter fileWriternew FileWriter(C:/Temp/基尼太美.txt);fileWriter.write(Cause I got a crush on you who you);//换行符需要手动添加fileWriter.write(\n);fileWriter.write(你是我的我是你的谁);fileWriter.write(\n);fileWriter.write(再多一眼看一眼就会爆炸);fileWriter.write(\n);fileWriter.write(再近一点靠近点快被融化);//清空缓冲区fileWriter.flush();//关闭流fileWriter.close();} }4.2、PrinterWriter简化写操作 示例5  import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter;/**PrinterWriter简化写操作/ public class Exe_06 {public static void main(String[] args) throws IOException {//创建一个输出流FileOutputStream outputStreamnew FileOutputStream(C:/Temp/基尼太美.txt);//根据输出流创建一个PrinterWriterPrintWriter printWriternew PrintWriter(outputStream);//写数据,自带换行符printWriter.println(Cause I got a crush on you who you);printWriter.println(再近一点靠近点快被融化);printWriter.println(再多一眼看一眼就会爆炸);printWriter.println(你是我的我是你的谁);//关闭流printWriter.close();outputStream.close();} }五、小程序练习  示例1  扫描指定目录并找到名称中包含指定字符的所有普通文件不包含目录并且后续询问用户是否要删除该文件 。 import java.io.File; import java.io.IOException; import java.util.Scanner;public class Exe_07 {public static void main(String[] args) throws IOException {//让用户输入一个路径System.out.println(请输入一个文件路径);Scanner scnew Scanner(System.in);//获取路径字符串String rootPathsc.nextLine();//根据字符串创建一个File对象File rootFilenew File(rootPath);//判断路径是否有效if(!rootFile.exists()){System.out.println(对不起您输入的路径是无效路径);return;}//判断是不是一个有效目录if(!rootFile.isDirectory()){System.out.println(对不起你输入的路径不是一个有效目录);return;}//让用户输入一个要找的关键字System.out.println(请输入你要删除的关键字);String keyWordssc.nextLine();//判断输入是否为空if(keyWordsnull){System.out.println(关键字不能为空);return;}//扫描文件scan(rootFile,keyWords);}private static void scan(File rootFile, String keyWords) throws IOException {//先获取root目录下的所有子文件以及目录File[] filesrootFile.listFiles();//判断数据是否为空if(filesnull||files.length0){//不做任何操作return;}//遍历数组检查操作for (File item:files) {//检查file对象是否是文件还是目录if(item.isFile()){//检查文件名是否包含关键字String fileNameitem.getName();if(fileName.contains(keyWords)){//找到了询问用户是否需要删除文件System.out.println(找到了item.getCanonicalFile(),包含关键字keyWords,是否删除文件(Y/N)?);//接收用户请求Scanner scannernew Scanner(System.in);String resultscanner.nextLine();//处理操作if(result.toLowerCase().equals(y)){//删除文件item.delete();System.out.println(删除文件item.getCanonicalFile()成功);}else{return;}}}else{//如果目标文件是一个目录递归区扫描目录文件scan(rootFile,keyWords);}}} }示例2  普通文件的复制 import java.io.*; import java.util.Scanner;public class Exe_08 {public static void main(String[] args) {//让用户输入一个路径System.out.println(请输入源文件路径);Scanner scnew Scanner(System.in);//获取路径字符串String sourcePathsc.nextLine();//根据字符串创建一个File对象File sourceFilenew File(sourcePath);//判断文件是否有效if(!sourceFile.exists()){System.out.println(源文件无效请重新输入);return;}//获取目标输入的目标文件路径System.out.println(请输入要复制到的目标文件路径);String targetPathsc.nextLine();// 根据目标路径创建File对象File targetFilenew File(targetPath);// 判断目标路径是否有效if (targetFile.exists()) {System.out.println(目标文件已存在请重新输入.);return;}// 判断目标文件的父目录必须存在if(!targetFile.getParentFile().exists()){System.out.println(目标文件的目录不正确);return;}//创建输入输出流try {InputStream inputStreamnew FileInputStream(sourceFile);OutputStream outputStreamnew FileOutputStream(targetFile);//读取源文件内容byte[] bytesnew byte[1024];while(true){//获取读取的长度和内容int len inputStream.read(bytes);if(len-1){break;}//把读取的文件写入目标文件中,从0~lenoutputStream.write(bytes, 0, len);}//刷新缓冲区outputStream.flush();//打印日志System.out.println(复制成功sourceFile.getCanonicalFile()—targetFile.getCanonicalFile());//关闭流inputStream.close();outputStream.close();} catch (IOException e) {throw new RuntimeException(e);}} }