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

做网站怎么添加背景图片/友情链接查询工具

做网站怎么添加背景图片,友情链接查询工具,廊坊做网站找谁,制作图官网IO流分为字节流和字符流,首先在介绍IO流的同时先介绍下文件的基本操作: 对于定位一个文件或者文件夹:File file new File("d:\\abc\text.text");//可以File file2 new File("d:/text.text");//可以File file3 new Fil…

IO流分为字节流和字符流,首先在介绍IO流的同时先介绍下文件的基本操作:

对于定位一个文件或者文件夹:

            File file = new File("d:\\abc\text.text");//可以

            File file2 = new File("d:/text.text");//可以

            File file3 = new File("d:\text.text");//不可以(\t属于制表符)

            File file4 = new File("d:/abc/xyz");

上面的这个其实也就是定位以为文件或者文件夹,实际操作还需要根据具体方法:

file.createNewFile();//这个是创建一个新的文件;如果abc这个文件夹不存在,则报文件路径错。

file4 .mkdir();//这个是创建一个新的文件夹。要求前面的abc文件夹必须存在。

file4.mkdirs();//这个是在整个目录结构都不存在的情况下用这个创建。如果abc这个目录存在,那么创建失败;

file.isDirectory();//判断是否是文件夹

file.isFile();//判断是否是文件

file2.exists()//判断这个目录是否存在

file.list();//列出这个目录下的所有的文件以及文件夹,子目录不会出来。

文件操作中过滤文件:

public static void main(String[] args){File file = new File("D:/abc/xyz/hello");String[] strings = file.list(new FilenameFilter() {//使用的是一个匿名类,也就是也就是有一个不知名的类实现了FilenameFilter这个接口,//就可以重写这个方法,然后得到这个功能,其实这个就是一个策略模式//这个也是返回所有文件的名字@Overridepublic boolean accept(File dir, String name){if(name.endsWith(".java"))//只有这个名字符合,才会放到这个string这个数组中来{return true;}else {return false;}}});for(String string: strings){System.out.println(string);}}

接下来就是字符流和字节流:

首先理解下输入输出流:

输入/输出是相对于程序来说的。程序在使用数据时所扮演的角色有两个:一个是源,一个是目的。若程序是数据流的源,即数据的提供者,这个数据流对程序来说就是一个“输出数据流”(数据从程序流出)。若程序是数据流的终点,这个数据流对程序而言就是一个“输入数据流”(数据从程序外流向程序);

从功能上分为两大类:输入流和输出流。

从流结构上可分为字节流(以字节为处理单位或称面向字节)和字符流(以字符为处理单位或称面向字符)。

字节流:的输入流和输出流基础是InputStream和OutputStream这两个抽象类,字节流的输入输出操作由这两个类的子类实现。

字符流:是Java1.1版后新增加的以字符为单位进行输入输出处理的流,字符流输入输出的基础是抽象类Reader和Writer。

字节流和字符流。字节流(byte stream)为处理字节的输入和输出提供了方便的方法。例如使用字节流读取或写入二进制数据。字符流(character stream)为字符的输入和输出处理提供了方便。它们采用了统一的编码标准,因而可以国际化。当然,在某些场合,字符流比字节流更有效

声明::在最底层,所有的输入/输出都是字节形式的。基于字符的流只为处理字符提供方便有效的方法!!!(重)

读数据的逻辑为:
open a stream
while more information
read information

close the stream

写数据的逻辑为:
open a stream
while more information
write information
close the stream

具体流的分类:

节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。

过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。

字节流


简单看下inputstream的用法:

public static void main(String[] args) throws Exception{InputStream is = new FileInputStream("d:/test.text");
//		输入流
//		InputStream是所有输入流所要继承的一个类,并且所有实现这个类的类中都会提供
//		重写的方法read()方法,这里FlieInputStream类是一个专门用于文件输入流
//		这个类继承了InputStream这个类,参数是指定文件byte[] buffer = new byte[200];
//		你肯定需要把你读取的字节流存放到一个Byte类型的数组里面所以这里定义了一个数组
//		但是那个while循环怎么来的呢,因为这个定义的数组只有200个,所以当你这个文件
//		中不止这么多那么就使用一个循环来获取int length;while(-1!=(length=is.read(buffer,0,200)))
//			read的第一个参数指代的是我们读取的字节流存放的数组,第二个参数是从第几个
//			字节开始存,第三个就是每次存取的最大字节流的个数,但是实际可能没有这么多
//			因为可能这个文件中也就不到200{String string = new String(buffer,0,length);//取出一个读一个,将读到的字节转化为字符串,这里使用的是一个String类//提供的一个构造方法,就是讲byte类型的数组,转化为String类型的变量//length就是实际读多长,我们就读多长System.out.println(string);}is.close();
//		关闭流}
outputstream相关用法:
	public static void main(String[] args) throws IOException{OutputStream os = new FileOutputStream("d:/out.text",true);//这个是一个字节输出流//当使用这个构造方法的时候就相当于在这个文件的后面增加//当使用只有一个参数的,那么就会将这个文件里面的东西改为我要输入的东西,原来的东西就不存在了//这个输入流不需要out.text这个文件必须存在,这个文件在write的时候就会自动创建String string = "hello world";byte[] buffer = string.getBytes();os.write(buffer);//写字节流//将buffer这个字节数组,通过这个文件输出流,将里面的内容写到那个文件输出流指定的文件当中//将buffer里面的东西写到这个文件输出流里面去//因为在FileOutputStream中只能write字节,这是一个字节的输出流os.close();}

带有缓冲的输出流:

public static void main(String[] args) throws IOException{OutputStream os = new FileOutputStream("D:/test.text");BufferedOutputStream bof = new BufferedOutputStream(os);//提高效率//这个是一个缓冲的,可以通过缓冲将东西输出到一个文件输出流,再把东西写到这个文件当中//bof这个缓冲对应的就是os这个文件bof.write("http://www.baidu.com".getBytes());//这个必须得转化为字节,因为这个是一个字节流的输出流//在输出流中write就是将参数中的东西输出到那个缓冲的输出流当中去,然后这个缓冲的输出流又包装了//一个文件输出流,这样一来,就可以直接利用这个机制将buffer输出流里面的东西输出到一个文件当中bof.close();os.close();}

字节输入输出流:

public static void main(String[] args) throws IOException{DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("D:/out.text")));//FileOutputStream就是一个节点流,其他的是过滤流,过滤流可以包装节点流//DataOutputStream是一个字节的输出流,可以使用这个将不同类型的数据利用字节输出流//将其放到这个字节输出流,然后再封装一个buffer输出流,将字节输出流中的东西放到buffer//输出流当中,同样利用buffer输出流将这个里面的东西放到文件输出流当中,这样一来,就把这些数据//写到了文件里面byte b = 3;int i = 12;char ch = 'a';float f = 2.3f;dos.writeByte(b);//将b写到这个字节输出流dos.writeInt(i);dos.writeChar(ch);dos.writeFloat(f);//写到字节输出流中不同的数据类型只能一个一个放进去,因为这里的定义了多个不同类型的数据dos.close();//其实最外面关闭了,最里面也就关闭了,所以这里只需要关闭最外面就行//		装饰模式对应了又四个角色/** 首先 是抽象构件角色:给出一个抽象的接口,以规范准备接受附加责任的对象:在这里就是那个InputStream* 接着是具体构件角色:定义一个将要接受附加责任的类:指代的是FileInputStream* 再者是抽象装饰角色:只有一个构件对象的引用,,并定义一个与抽象构件接口一致的接口:指代的是FilterInputStream* 最后是具体装饰角色:负责给构件对象“贴上”附加的责任:在这里指代的是就是new DataInputStream*/DataInputStream dInputStream = new DataInputStream(new BufferedInputStream(new FileInputStream("D:/out.text")));/** FileInputStream可以以字节的形式读文件,作为输入流,DataInputStream可以数据类型du* 数据,也就是可以将字节形式的数据合成有用的数据类型*/System.out.println(dInputStream.readByte());System.out.println(dInputStream.readInt());System.out.println(dInputStream.readChar());System.out.println(dInputStream.readFloat());}

•FileInputStream和FileOutputStream
节点流,用于从文件中读取或往文件中写入字节流。如果在构造FileOutputStream时,文件已经存在,则覆盖这个文件。
•BufferedInputStream和BufferedOutputStream
过滤流,需要使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率。
•DataInputStream和DataOutputStream
过滤流,需要使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。
•PipedInputStream和PipedOutputStream

管道流,用于线程间的通信。一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流。

System类的类变量out表示标准输出流

System类的类变量in表示标准输入流


字符流


这里简单看下几个例子:

首先字符流和字节流连接有两个中间(InputStreamRead和OutputStreamwriter)

public static void main(String[] args)throws Exception{FileOutputStream fos = new FileOutputStream("D:\\test.txt");//字节流OutputStreamWriter osw = new OutputStreamWriter(fos);//相当于字符和字节之间的桥梁,这个是一个字符写到字节中的一个流BufferedWriter bw = new BufferedWriter(osw);bw.write("http://www.google.com");//通过OutputStreamWriter这个输出流,实现字符流到字节流的转换bw.write("\n");//这个是一个换行的bw.write("http://www.baidu.com");bw.close();//记住这个在这里需要关闭FileInputStream fis = new FileInputStream("D:\\test.txt");//字节流InputStreamReader isr = new InputStreamReader(fis);//字符流,这个也是相当于是字节和字符之间的桥梁,因为从文件中以字节流读进来,然后经过这个//桥梁吧字节的输入流转化为字符的输入流。下面再用一个缓冲的字符输入流将这个写到字符输入流,最后//read出来BufferedReader br = new BufferedReader(isr);//字符流
//		char[] ch = new char[100];
//		br.read(ch);//		String string = ch.toString();
//		System.out.println(string);
//		
//		System.out.println(br.readLine());//读一行,遇见换行就停止
//		System.out.println(br.readLine());
//		br.close();//一定要关闭String string = br.readLine();while(null != string)//if语句的话那么就只能输出一行{System.out.println(string);string = br.readLine();//当读到最后一行这个while循环就结束}br.close();}

从控制台:

public static void main(String[] args)throws IOException{InputStreamReader isr = new InputStreamReader(System.in);//System.in从标准的输入设备中输入,然后使用包装的方法BufferedReader bf = new BufferedReader(isr);//		String string ;
//		while(null != (string = bf.readLine()))
//		{
//			System.out.println(string);
//			
//		}String string = bf.readLine();while(null != string){System.out.println(string);string = bf.readLine();}}
读字符数组:
public static void main(String[] args) throws IOException{String string = "akdhiushf";char[] ch = new char[string.length()];string.getChars(0,string.length(),ch,0);//这个是将字符串转化啊为字符数组,//将字符数组转化为字符串是String string = new String(ch)CharArrayReader charArrayReader = new CharArrayReader(ch);//读字符数组int i;while(-1 != (i = charArrayReader.read()))//这里read方法返回的是一个整数,所以得到的这个i是那个字符所对应的整数,//所以在下面需要将这个强制类型装换,这样就能将这个输出,否则输出的就是一个整数{System.out.println((char)i);//读到的是一个整数,可以将这个转化为一个字符}}

字符流读文件:

public static void main(String[] args) throws IOException{FileReader fr = new FileReader("D:/FileReader1.java");BufferedReader br = new BufferedReader(fr);String string;while(null != (string = br.readLine()))//一行一行的读取出来{System.out.println(string);}br.close();}

字符流写文件:

public static void main(String[] args) throws IOException{String string = "hello world welcome nihao hehe";char[] buffer = new char[string.length()];string.getChars(0,string.length(),buffer,0);//这个方法是将一个字符串转化为一个字符数组FileWriter fileWriter = new FileWriter("D:/test.text",true);//在文件字符流当中既可以写字符,也可以写字符串
//1		fileWriter.write(buffer);//这个是直接将所有的直接一次性一个一个字符的放到这个文件当中//2		for(int i = 0; i < buffer.length; i ++)
//		{
//			fileWriter.write(buffer[i]);//每个字符对应一种类型
//		}//3		fileWriter.write(string);//4		fileWriter.write(buffer,0,4);//5		fileWriter.write(string,0,5);//这几个都可以,针对不同的情况将参数中的值写到文件当中,//FileWriter这个是建立和文件的一个字符输出流fileWriter.close();}

读写都可以的(RandomAccessFile):

public static void main(String[] args)throws Exception{Person person = new Person(1,"niesong",1.75);RandomAccessFile rFile = new RandomAccessFile("D:/test.text","rw");person.write(rFile);//这个是一个随机写的,写完后就在最后面,所以需要把指针移到开头,在这个类中有一个seek()方法rFile.seek(0);//让读的位置重新回到文件的开头Person person2 = new Person();person2.read(rFile);//将读到的内容放到person2当中System.out.println(person2.getId()+","+ person2.getName()+","+person2.getHeight());}





http://www.lbrq.cn/news/1060309.html

相关文章:

  • 做网站领券收佣金/嘉兴seo排名外包
  • 网上赚钱游戏/厦门seo厦门起梦
  • wordpress trash/深圳seo云哥
  • 做海淘的网站做海淘的网站有哪些/网站seo快速排名
  • wordpress 服务器配置/seo技术教程网
  • wordpress博客怎麽用/网站如何进行seo
  • 做网站使用什么语言好/网站开发月薪多少钱
  • 网站开发公司源码/重庆快速网络推广
  • 专业的丹阳网站建设/企业网站建设门户
  • 杭州网站建设专家/app开发工具
  • 内蒙古包头做网站的公司/新东方在线网上课程
  • 网站建设方法总汇/网络营销外包顾问
  • 提升网站页面打开速度/谷歌seo优化
  • 咨询网站开发/域名查询 ip
  • sublime做家乡网站/公司网络推广网站
  • 做网站模板的网页名称是m开头/企业网站建设方案范文
  • wordpress购物网站/广州百度关键词搜索
  • 南京市浦口区建设局网站/适合seo软件
  • 做网站用哪个服务器/手机app免费制作平台
  • 男女做暖免费网站 香蕉/百度网站提交了多久收录
  • 长沙市宁乡县建设局网站/产品推广方式有哪些
  • 付费网站建设模板/推广优化工具
  • 中国城乡和住房建设部网站/目前最火的自媒体平台
  • wordpress 只显示文字/win10优化
  • 网站推广要怎样做/正安县网站seo优化排名
  • 今日全世界疫情排名一览表/seo网站关键词优化
  • 百度竞价网站/百度服务电话6988
  • 域名停靠app大全下载网站入口2023/在线crm
  • python和java做网站/天津网络优化推广公司
  • 有个新网站专门做外贸的叫什么/seo营销方案
  • 游戏画面总是卡顿怎么办 告别延迟畅玩游戏
  • 2025年渗透测试面试题总结-01(题目+回答)
  • 大模型之后,机器人正在等待它的“GPT-1 时刻”
  • 力扣:2246. 相邻字符不同的最长路径
  • 思途JSP学习 0802(项目完整流程)
  • Linux 摄像头实时抓取:V4L2、FFmpeg 与 GStreamer 全面讲解