-
在中文机器上创建的文件只认识ansi编码,但是文件本身识别任何编码查看全部
-
utf-8编码中 中文占用3个字节 英文占用一个字节查看全部
-
一个类实现类序列化接口,那么他的子类也实现了序列化接口 对于子类对象进行反序列化的时候 如果父类没有实现序列化接口,那么父类的构造函数就会被显示的调用 如果父类实现了序列化接口,那么反序列化子类的时候父类的构造函数就不会被显示的调用查看全部
-
transient关键字可以使属性不被JVM序列化 进入ArrayList源码: Ctrl+鼠标左键 进入查找/替换窗口,查找关键字 Ctrl+F transient int age; private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ //将jvm能默认序列化元素进行序列化操作 s.defaultWriteObject(); s.writeInt(age); } private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException { //将jvm能默认反序列化元素进行序列化操作 s.defaultReadObject(); this.age=s.readInt(); }查看全部
-
对象的序列化,反序列化 1.对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化 2.序列化流(ObjectOutputStream)是过滤流---->writeObejct 反序列化流(ObjectInputStream)---->readObejct 3.序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将会出现异常 这个接口没有任何方法,只是一个标准 ObjectOutputStream oos=new ObjectOutputStream( new FileOutputStream("路径")); Student stu=new Student("no","name",age); ObjectInputStream ois=new ObjectInputStream( new FileInputStream("路径")); Student test=(Student) ois.readObject();查看全部
-
字符流之过滤器: BufferedReader:readLine 一次读一行 BufferedWriter/PrintWriter: 一次写一行 BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream("路径"))); String line; while((line = br.readLine())!=null) //需要手写换行 bw.newLine(); BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( new FileOutputStream("路径"))); PrintWriter pw=new PrintWriter("路径"); 两种写法: pw.println(buf); pw.write(buf);查看全部
-
InputStreamReader OutputStreamWriter FileReader FileWriter true再追加一遍输入流的内容 FileWriter fw=new FileWriter ("路径",true);查看全部
-
字符流:一次处理一个字符,字符的底层任然是基本的字节序列; InputStreamReader isr=new InputStreamReader(in,"编码格式"); InputStreamReader isr=new InputStreamReader(in);//默认GBK编码 InputStreamReader 完成byte流解析为char流,按照编码解析 OutputStreamWriter 提供char流到byte流,按照编码处理查看全部
-
字节流: 从应用程序中把输入放入文件,相当于将一缸水倒入到另一个缸中: FileOutputStream--->write()方法相当于一滴一滴地把水“转移”过去 DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢(比如int 4滴4滴转移)把水“转移”过去 BufferedOutputStream--->write方法更方便,相当于一飘一瓢先放入桶中(缓冲区),再从桶中倒入到另一个缸中 //计算时延 long start=System.currentTimeMillis(); long end=System.currentTimeMillis(); System.out.println(end-start);查看全部
-
DataOutputStream dos=new DataOutputStream(new FileOutputStream(file)); //采用utf-8编码写出 dos.writeUTF("中国"); //采用uft-16be编码写出 dos.writeChars("中国");查看全部
-
//write只能写8位 整形32位分四次写完 rwf.write(a>>>24); rwf.write(a>>>16); rwf.write(a>>>8); rwf.write(a); a = -1,二进数是1111 1111 1111 1111 1111 1111 1111 1111,右移24位,最左边补0, 变为0000 0000 0000 0000 0000 0000 1111 1111 out.flush(): 为了提高IO吞吐效率,一般的IO服务都带缓冲区,当缓冲区满了再输出一次,这样减少IO次数。 flush() 则要求立即将缓冲区的数据输出到接收方查看全部
-
从int中批量读取字节,放入buf字节数组中 byte buf[]=new byte[8*1024]; int bytes=in.read(buf,0,buf.length) byte类型8位 int类型32位查看全部
-
IO流:输入流和输出流(字节流和字符流) 字节流:InputStream、OutputStream; 输入流: int b=in.read();每次读取一个字节,并判断in.read()的值是否等于-1, 当in.read()值等于-1时,代表数据读取完毕,最后将输入流的值赋值给b 输出流: out.write(int b)写入一个byte到流 1字节(byte)=8位(bit) 1个整形是32位(即4字节)查看全部
-
RadomAccessFile是java提供对文件内容访问类,既可以读文件也可以写文件。 RadomAccessFile可随机访问文件,可访问文件任意位置。 (1)java文件模型在硬盘上是byte byte byte存储的,是数据集合。 (2)打开文件有两种模式("rw")读写("r")只读。 基本语法:RandomAccessFile raf = new RandomAccessFile(file,"rw"); file为文件的对象"rw"是文件的读写权限,而且具有文件指针,打开文件时指针在开头 pointer在开头,读写的时候指针都会移动。 (3)raf.write(int)----->只写一个字节(后八位),同时指针指向下一个位置准备下次写入。 (4)int b = raf.read(int)---->读一个字节。 (5)文件操作之后一定要关闭。 (6)如果我们创建一个file类对象时没有给定目录系统就会默认在项目中。 如果创建的file对象不存在,我们可以通过 file对象.mkdir()方法来创建目录。 我们可以通过 File demon = File(创建文件目录,"文件名")方式来创建一个文件对象,然后我们用RandomAccessFile raf = new RandomAccessFile(文件引用,"读写的权限"); 我们可以通过raf.getFilePointer()来获取指针的位置。 当用write()方法写的时候只能写进去一个字节即(后八位)。 如果用write()方法,每次只能写一个字节,如果想把整数写进去,就得写四次。运用移位运算符i>>>8之类的。 我们RandomAccessFile类中有writeInt(i)方法,可以直接把i写进去,我们可以将字符串s通过 byte[] by = s.getBytes()来将s转化成字节数组。 然后raf.write(by)将字符数组写入文件。我们可以通过raf.length()来获取文件的字节数。 用raf.seek(0)来将raf的指针指向开头处,可以通过byte[] by = new byte[(int) raf.length()]然后我们可以直接全部读取即raf.read(by)就可以将文件中的数据全部读进文件我们可以通过Arrays.toString(by)方法将数据以数组的方式输出。查看全部
-
file类的使用: 1,列出指定目录下(包括子目录)得所有文件,用file的对象dir.exit()方法可以判断是否存在,如果不存在就抛出异常。throw new IlleaglArguementException("异常内容"); 我们用dir.isDirectory()来判断file类的对象是否是目录。 dir.list()返回的是一个String类型的数组,里面存储的是目录里面所有的文件名(没有子目录);如果要遍历子目录下的内容就需要构造成File对象做递归操作。file提供了 dir.listFile()来返回直接子目录(文件)的对象数组。查看全部
举报
0/150
提交
取消