-
String s="1111"; Byte[] bt=s.getBytes(gbk);//字符串转换为byte,括号里的是显示的指定某种编码此时会抛出异常 String str = new String(bt,"utf-16be")//括号里放的参数一个是要转换成字符串的字节数组,另一个参数是转换所用的编码格式、查看全部
-
文本文件,就是字节序列,可以是任意编码的字节序列,如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ANSI编码,而粘贴过来的全都认识查看全部
-
如果在中文机器上直接创建文本文件,那么该文本文件只认识ANSI编码 中文系统下,ANSI编码代表GBK编码。查看全部
-
当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码。查看全部
-
java是双字节编码(utf-16be): 中文两个字节 英文两个字节; GBK:中文占两个字节,英文1个字节; utf-8:中文占三个字节,英文占1个字节。 中文系统下:ANSI编码代表GBK编码。 文本文件就是字节序列, 可以是任意编码的字节序列查看全部
-
创建工具类:FileUtil;包装一些File的常用操作,例如过滤和遍历等。 1.列出指定目录下(包括子目录)的所有文件。 如果传进来的目录不存在或者不是文件夹抛出异常。 String[] filenames=file.list();返回当前目录下的子目录和文件名的字符串数组(但是不包含子目录下的文件和目录)。 File[] files=file.listFile();可以直接获取file下的文件或目录然后以File对象数组的形式返回。 然后递归调用就可一把所有目录下的文件路径读出来,或者获取所有文件。查看全部
-
创建工具类:FileUtil;包装一些File的常用操作,例如过滤和遍历等。 1.列出指定目录下(包括子目录)的所有文件。 如果传进来的目录不存在或者不是文件夹抛出异常。 file.list();返回当前目录下的子目录和文件名的字符串数组(但是不包含子目录下的文件和目录)。 File[] files=file.listFile();可以直接获取file下的文件或目录然后以File对象数组的形式返回。 然后递归调用就可一把所有目录下的文件路径读出来,或者获取所有文件。查看全部
-
序列化过程中子父类构造函数问题 一、父类实现了serializable接口,子类继承就可序列化。 1、子类在反序列化时,父类实现了序列化接口,则不会递归调用其构造函数。 二、父类未实现serializable接口,子类自行实现可序列化 2、子类在反序列化时,父类没有实现序列化接口,则会递归调用其构造函数。 *** 结论:【反序列化时】,向上递归调用构造函数会从【可序列化的一级父类结束】。即谁实现了可序列化(包括继承实现的),谁的构造函数就不会调用。查看全部
-
transient 关键字:被transient修饰的元素,该元素不会进行jvm默认的序列化,但可以自己完成这个元素的序列化 注意:(1)在以后的网络编程中,如果有某些元素不需要传输,那就可以用transient修饰,来节省流量;对有效元素序列化,提高性能。 (2)可以使用writeObject自己完成这个元素的序列化。ArrayList就是用了此方法进行了优化操作。ArrayList最核心的容器Object[] elementData使用了transient修饰,但是在writeObject自己实现对elementData数组的序列化。只对数组中有效元素进行序列化。readObject与之类似。 private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException private void readObject(java.io.ObjectInputStream s) throws java.io.IOException,ClassNotFoundException查看全部
-
//Student implements Serializable String file = "demo/obj.dat"; //1.对象的序列化 ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(file)); Student stu = new Student("1001","张三",20); oos.writeObject(stu); oos.flush(); oos.close(); //反序列化 ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file)); Student stu = (Student)ois.readObject(); System.out.println(stu); ois.close();查看全部
-
BufferedReader readLine 一次读一行 BufferedWriter/PrintWriter 写一行 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.*; public class BrAndBwOrPwDemo { public static void main(String[] args)throws IOException { //对文件进行读写操作 BufferedReader br=new BufferedReader( new InputStreamReader( new FileInputStream("D:\\javaio\\imooc.txtx"))); /*BufferedWriter bw=new BufferedWriter( new OutputStreamWriter( new FileOutputStream("D:\\javaio\\imooc3.txt")));*/ PrintWriter pw=new PrintWriter("D:\\javaio\\imooc4.txt"); //PrintWriter pw1=new PrintWriter(outputStream,boolean autoFlush); String line; while((line=br.readLine())!=null){ System.out.println(line); //一次读一行,并不能识别换行 /*bw.write(line); //单独写出换行操作 bw.newLine(); //换行操作 bw.flush();*/ pw.println(); pw.flush(); } br.close(); //bw.close(); } }查看全部
-
字符流 (操作的是文本 文本文件) 注意默认的编码方式 1)编码问题 2)认识文本和文本文件 java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码) 文件是byte byte byte 的数据序列 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化byte的存储 3)字符流(Reader Writer) 字符的处理,一次处理一个字符 字符的底层依然是基本的字节序列 4)InputStreamreader 完成byte流解析成char流 按照编码解析 OutputStreamWrite 提供char流到byte流 按照编码处理查看全部
-
//利用带缓冲的字节流,实现文件拷贝 public static void copyFileByBuffer(File srcFile,File destFile)throws IOException{ if(!srcFile.exists()){ throw new IllegalArgumentException("文件:"+srcFile+"不存在"); } if(!srcFile.isFile()){ throw new IllegalArgumentException(src+"不是文件"); } BuffereInputStream bis = new BufferedInputStream(new FileInputStream(srcFile)); BuffereOutputStream bis = new BufferedOutputStream(new FileOutputStream(desFile)); int c; while((c=bis.reand())!-1){ bos.write(c); bos.flush();//刷新缓存区 } bis.close(); bos.close(); }查看全部
-
public static void copyFile(File srcFile,File destFile)throws IOException{ if(!srcFile.exists()){ throw new IllegalArgumentException("文件:"+srcFile+"不存在"); } if(!srcFile.isFile()){ throw new IllegalArgumentException(srcFile+"不是文件"); } FileInputStream in = new FileInputStream(srcFile); FileOutputStream out = new FileOutputStream(destFile); byte[] buf = new byte[8*1024]; int b ; while((b = in.read(buf,0,buf.length))!=-1){ //将buf数组里的內容读入到该输出流中(out) out.write(buf,0,b); out.flush();//最好加上 } in.close(); out.close(); }查看全部
-
public static void prinHexByByteArray(String fileName)throws IOException{ FileInputStram in = new FileInputStream(fileName); byte[] bytes = new byte[20*1024]; //从in中批量读取字节,放入到buf这个字节数组中 //从第0个位置开始放,最多放buf.length个 //返回的是读到的字节的个数 int bytes = in.read(buf,0,buf.length);//一次性读完,说明字节数组足够大 int j=1; for(int i=0; i<bytes; i++){ if(buf[i]<=0xf){ System.out.print("0"); } System.out.print(Integer.toHexString(buf[i]+" ")); if(j++%==0){ System.out.println(); } } //使用while实现 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.println(); } } } }查看全部
举报
0/150
提交
取消