-
为什么转换成16 进制方式显示 System.out.println(Integer.toHexString(b&0xff)+" ") 因为比较好看,二进制输出一个字节老长了查看全部
-
记事本有默认的BOM头占三个字节查看全部
-
Java中I/O输入输出流的目录查看全部
-
字符流的过滤器 BufferedReader---->readLine不识别换行符 BufferedWriter/PrintWriter---->write 例子:对文件进行读写操作 BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(filename1))) BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename2))) PrintWriter pw=new PrintWriter(filename3) String line while((line=br.readLine())!=null){ bw.writer(line) bw.newLine()//单独写出换行操作 bw.flush() } while((line=br.readLine())!=null){ pw.println(line)//有换行 pw.print(line)//不换行 pw.flush() } br.close() bw.close() pw.close()查看全部
-
FileReader/FileWriter FileReader fr=new FileReader(filename1) FileWriter fw=new FileWriter(filename2)//覆盖 FileWriter fw=new FileWriter(filename2,true)//追加 char[] buffer=new char[2056] int c while((c=fr.reader(buffer,0,buffer.length))!=-1){ fw.writer(buffer,0,c) fw.flush() } fr.close() fw.close()查看全部
-
字符流---->操作的是文本文件<br> 认识文本和文本文件<br> Java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)<br> 1)文件是byte byte byte。。。的数据序列<br> 2)文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果<br> 3)字符流(Reader Writer)<br> 字符的处理,一次处理一个字符<br> 字符的底层仍然是基本的字节序列<br> InputStreamReader完成byte流解析为char流,按照编码解析<br> OutputStreanWriter提供char流到byte流,按照编码处理<br> InputStreamReader isr =new InputStreamReader(new FileInputSTream("e:\\javaio\\1.txt"))//默认项目的编码为gbk<br> char c;<br> while((c=isr.read())!=-1)<br> System.out.print((char)c)//往控制台读出字符<br> char[] buff=new char[8*1024]<br> while((c=isr.read(buff,0,buff.length))!=0)//批量读取<br> {<br> String s=new String(buff,0,c)<br> System.out.print(s)<br> }输出要flush一下查看全部
-
BufferedInputStream/BufferedOutputStream 为IO提供了带缓冲区的操作,一般打开文件进行写入或读取操作时,都会加上缓冲,这种模式提高了IO的性能 从应用程序中把数据放入文件,相当于将一缸水倒入到另一个缸中 带缓冲的去拷贝: BufferedInputStream bis=new BufferedInputStream(new FileInputStream(filename1)) BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(filename2)) int c while((c=bis.read())!=-1){ bos.write(c) bos.flush()//刷新缓冲区 }//开辟了缓冲区,缓冲区满了才会写入查看全部
-
DataOutputStream/DataInputStream对流功能的扩展,可以更加方便的读取int long字符等类型数据 DataOutputStream的方法: writeInt()/writeDouble()/writeUTF() 例子 String file="demo/dos.dat" DataOutputStream dos=new DataOutputStream(new FileOutputStream(file)) dos.writeInt(10) dos.writeInt(-10) dos.writeLong(10l) dos.writeDouble(10.5) dos.writeUTF("中国")//采用UTF-8编码写出 dos.writeChars("中国")//采用UTF-16be编码写出 dos.close() DataInputStream的方法 DataOutputStream dis=new DataOutputStream(new FileOutputStream(file)) int i=dis.readInt() System.out.print(i)查看全部
-
IO流(输入流、输出流) 字节流、字符流 一.字节流 1.InputStream、OutputStream InputStream抽象了应用程序读取数据的方式 OutputStream抽象了应用程序写出数据的方式 2.EOF = End 读到-1就读到结尾 3.输入流基本方法 int b = in.read();读取一个字节无符号填充到int低八位。-1是EOF in.read(byte[] buf)读取数据填充到字节数组buf in.read(byte[] buf,int start,int size)读取数据到字节数组buf从buf的start位置开始存放size长度的数据 4.输出流基本方法 out.write(int b)写出一个byte到流,b的低8位 out.write(byte[] buf)将buf字节数组都写入到流 out.write(byte[] buf,int start,int size) 字节数组buf从start位置开始写size长度的字节到流 5.FileInputStream--->具体实现了在文件上读取数据查看全部
-
FileOutputStream---->继承了OutputStream,实现了向文件中写出byte数据的方法 FileOutputStream out = new FileOutputStream(filename)//如果该文件不存在则直接创建,如果不存在则删除后创建 复制文件: FileOutputStream out = new FileOutputStream(filename,true)//如果存在则追加 out.write('A')//写出字符A的低八位 例子:write方法写一个int整数 int a=10 out.write(a>>>24);out.write(a>>>16);out.write(a>>>8);out.write(a); 写字符 byte[] gbk="中国".getBytes("gbk") out.write(gbk) out.close() 批量写入 int bytes=0 while((bytes=in.read(buf,0,buf.length))!=0){ for(int i=0;i<bytes;i++) System.out.print(Integer.toHexString(buf[i]&0xff)+" ") } in.close() 复制一个文件: FileInputStream in=new FileInputStream(filename1) FileOutputStream out=new FileOutputStream(filename2) byte[] buf= new byte[8*1024] int b while((b=in.read(buf,0,buf.length))!=-1){ out.write(buf,0,b) out.flush } in.close() out.close()查看全部
-
批量字节读取 byte类型8位,int类型32位 FileInputStream in=new FileInputStream(filename) byte[] buf=new byte[20*1024] //从in中批量读取字节,放入到buf字节数组中,返回读到的字节个数 int bytes=0 int j=1 while((bytes=in.read(buf,0,buf.length))!=-1) { for(int i=0;i<bytes;i++){ System.out.print(Integer.toHexString(buf[i]&0xff)+" ") } if(j++%10==0) System.out.print() }查看全部
-
字节流 1)有InputStream、OutputStream两个抽象类 InputStream抽象了应用程序读取数据的方式 OutputStream抽象了应用程序写出数据的方式 2)EOF=END读到-1就读到结尾 3)输入流基本方法 int b=in.read()读取一个字节无符号填充到int低八位,-1是EOF in.read(byte[] buf)//读取数据填充到字节数组buf in.read(byte[] buf,int start,int size) 4)输出流基本方法 out.write(int b)写出一个byte到流,b的低八位 out.write(byte[] buf)将buf字节数组都写入到流 out.write(byte[] buf,int start,int size) 5)FileInputStream子类继承了InputStream---->具体实现了在文件上读取数据 例子: FileInputStream in=new FileInputStream(filename) int b; int i=1; while((b=in.read())!=-1){ 输出b } in.close()查看全部
-
随机读取文件的好处:大文件的下载——迅雷中多个进程同时下载文件的一部分,下载完后拼装到一起,由RandomAccessFile可以知道拼装的位置 Java提供的对文件内容的访问类,可以读写文件 可以随机访问文件,可以访问文件的任意位置 1)Java文件模型 在硬盘上的文件是byte byte byte存储的,是数据的集合 2)打开文件 有两种模式“rw”(读写)“r”(只读) RandomAccessFile raf=new RandomAccessFile(file,"rw"); 文件指针,打开文件时指针在开头 pointer=0; 随着文件读写,指针会向后移动。 3)写方法 raf.write(int)---->只写一个字节(后8位),同时指针指向下一个字节位置 4)读方法 int b=raf.read()---->读一个字节 5)关闭 例子: 创建目录:demo.mkdir() 在目录下创建文件:File file=new File(demo,"raf.dat")如果不存在则:file.createNewFile() 对文件进行读写:RandomAccessFile raf=new RandomAccessFile(file,"rw"); 查看指针位置:打印输出raf.getFilePointer() 进行写操作:raf.write('A')//只写入A的后八位 写入int大小:int i=0x7fffffff raf.writeInt(i); 写入中文汉字:String s="中" byte[] gbk=s.getBytes("gbk")//gbk编码进行转换 raf.write(gbk) 读文件,必须把指针移到头部:raf.seek(0) 一次性读取,把文件中的内容都读到字节数组中:byte[] buf=new byte[(int)raf.length()] raf.read(buf) 数组形式输出:System.out.println(Arrays.toString(buf)) 关闭:raf.close查看全部
-
对目录、文件的遍历操作 列出指定目录下(包括其子目录)的所有文件 如果目录不存在或不是目录,抛出异常 列出目录下的所有子目录和文件 (不包括子目录的子目录)String[] filenames=dir.list(); 将其显示在控制台:for(String string:filenames){ System.out.println(dir+"\\"+string); } 如果想遍历子目录下的内容就需要构造成File对象做递归操作, File提供了直接返回对象的API:File[] files=dir.listFiles(),返回的是直接子目录(文件)的对象,然后对其进行递归操作。 dir.list查看全部
-
File类常用API 调用一个文件:File file=new File("e:\\javaio"); 如果文件不存在:if(!file.exists()) 创建一个文件:file.mkdir();——————创建多级目录:file.mkdirs() 否则:else 删除文件:file.delete(); 是否是一个目录:file.isDirectory() 是否是一个文件:file.isFile() 调用一个txt文件:File file2=new File("e:\\javaio\\日记.txt") 另一种方法:File file2=new File("e:\\javaio","日记.txt") 如果不存在就创建一个:file2.craeteNewFile() System.out.println(file)打印出来的是file的路径:e:\javaio也就是file.toString()的内容,也是file.getAbsolutePath()的内容 获取文件的名字:file.getName() 获取文件父目录的路径:file.getParent() 等同于file.getParentFile().getAbsolutePath()查看全部
举报
0/150
提交
取消