-
那句“如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ansi编码”,中“认识”二字很容易产生误导。容易让人误以为记事本程序只能读取ansi编码的文档,没法解析认识其他编码的文字。准确点应该说,“如果我们在中文机器上直接创建文本文件,那么文本文件默认以ansi编码来保存文字信息”。查看全部
-
创建的不认识直接粘贴的都认识查看全部
-
RandomAccessFile类 RandomAccessFile类 是java提供的对文件内容的访问,即可以读取文件,也可以写文件。RandomAccessFile类支持随机访问文件,可以访问文件的任意位置 ********RandomAccessFile类实现步骤 (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)关闭流 文件读写完成以后一定要关闭流(Oracle官方说明) *RandomAccessFile 类的方法 raf.getFilePointer();--->获取指针的位置 raf.writeInt(i);//写入一个int raf.seek(0);//移动指针到index的位置 raf.length();返回的是long //一次性读取,把文件中的内容都读取到字节数组中 byte[] buf = new byte[(int)raf.length()] raf.read(buf); //变成字符串,装入数组中进行输出 Arrays.toString(buf); for(byte b : buf){ //以16进制进行输出 Integer.toHexString(b&0xff)+""; } raf.close();查看全部
-
完成自己的序列化(从ArrayList源码中copy的两个方法)查看全部
-
在进行反序列化时父类的构造方法的调用查看全部
-
这个IOUtilTest4是用来测试copyFileByBuffered 有误这个查看全部
-
DataInputStream/DataOutputStream查看全部
-
String[] filenames = file.list() //返回的是字符串数组,列出当前目录下的所有子目录和文件,不包含子目录下的内容 如果要遍历子目录下的内容就需要构造成File对象做递归操作,File提供了直接返回File对象的API File[] files = file.listFiles(); //返回的是File数组,列出当前目录下的所有子目录和文件,不包含子目录下的内容 //递归,遍历出该目录下所有文件信息,包括子目录下的文件 for(File f :files){ if(f.isDirectory){ //递归遍历该目录下的子目录的信息 listDirectory(file); } else{ System.out.pritln(file); } }查看全部
-
父类实现序列化接口,其所有子类均无需再实现序列化接口也能被序列化。 序列化中子父类构造函数的调用问题: 对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被调用,如果已实现则不会被调用。 初始化子类时父类构造方法会被递归调用查看全部
-
使用transient关键字使指定的object元素不进行jvm默认的序列化 自己序列化的方式:【截图】 ArrayList源码中自己序列化的目的:ArrayList底层为数组,自己序列化可以过滤数组中无效的元素,只序列化数组中有效的元素,从而提高性能。查看全部
-
对象的序列化和反序列化之 ObjectOutputStream/ObjectInputStream 本质:将Object转换为byte序列或反之。 注意:被序列话的对象必须实现Serializable接口,否则会抛出异常,这个接口没有任何方法,只是一个标准。 常用方法:writeObject() / readObject();查看全部
-
byte[]数组来接收数据查看全部
-
字符流之过滤器: BufferedReader、BufferWriter、PrintWriter; 可以使用BufferedReader的readLine()方法一次读入一行,为字符串形式,用null判断是否读到结尾。使用BufferedWriter的write()方法或PrintWriter的print()方法写入文件,每次写入后需要调用flush()方法清空缓冲区。在写入时需要注意写入的数据中会丢失换行,可以在每次写入后调用BufferedReader的newLine()方法或改用PrintWriter的println()方法补充换行。 通常将PrintWriter配合BufferedWriter使用。(PrintWriter的构造方法,及使用方式更为简单)。查看全部
-
字符流之文件读写流的使用: FileReader/FileWriter 使用字符数组作为缓冲区读写文件,要格外注意文件的编码方式,这种流会默认以项目编码来读写文件,可能导致编码与项目编码不同的文本文件产生乱码,而且这种流在使用时不能指定编码,所以当操作不同编码的文件时应当回归到字符流来操作。查看全部
-
java中文本、文件、文本文件的实质解析: 文件:byte byte byte的数据序列 文本:是16位无符号整数(char),是字符的unicode编码(双字节编码) 文本文件:是文本序列按照某种编码方案(utf-8、utf-16be、gbk)序列化为byte的存储结果。查看全部
举报
0/150
提交
取消