-
(1)单字节读取不适合大文件 (2)批量读取,对大文件而言效率高,也是我们最常用的读文件的方式查看全部
-
file.createNewFile();创建文件 file.mkdir();创建文件夹 file.mkdirs();多级目录创建 file.delete();删除目录 file.renameTo();改名字 file.exist();判断是否存在 file.isDirectory();判断是否是目录 file.canRead();判断可读 file.canWrite();判断可编辑 file.isHidden();判断是否隐藏 File file = new File(“e:”+File.separator)//File.separator 设置分隔符,不管在哪个系统下都可以 file.list() 返回的是 字符串数组 直接子的名称,不包含子目录下的内容String[] file.listFiles() 返回当前目录下的所有子目录和文件的文件数组名称File[] file.getAbsolutePath();获得绝对路径 getName(); getParent(); file.getPath();获得当前对象的路劲查看全部
-
String s="慕课ABC"; byte[] bytes1=s.getBytes();//这是把字符串转换成字符数组,转换成的字节序列用的是项目默认的编码 for(byte b: bytes1) System.out.println(Integer.toHexString(b & 0xff)+" ");// & 0xff是为了把前面的24个0去掉只留下后八位 //toHexString这个函数是把字节(转换成了Int)以16进制的方式显示 byte[] bytes1=s.getBytes("gbk");//也可以转换成指定的编码 gbk编码: 中文占用两个字节,英文占用一个字节 utf-8编码:中文占用三个字节,英文占用一个字节 java是双字节编码,是utf-16be编码 utf-16be编码:中文占用两个字节,英文占用两个字节 当字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码 String str1=new String(bytes4);//这时会使用项目默认的编码来转换,可能出现乱码 要使用字节序列的编码来进行转换 String str2=new String(bytes4,"utf-16be"); 文本文件就是字节序列,可以是任意编码的字节序列 如果我们在中文机器上直接创建文本文件,那么该文件只认识ANSI编码(例如直接在电脑中创建文本文件)查看全部
-
IO流(输入流、输出流) 字节流、字符流 (1)字节流 1. InputStream、OutputStream分别抽象了应用程序读入、写出数据的方式 2. EOF = End 读到-1就读到结尾 3. 输入流基本方法 int b = in.read();读取一个字节无符号填充到int低 8 位。-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,int start,int size) // 写出从buf的start位置开始存放size长度的数据 5. FileInputStream ---> 具体实现了在文件上读取数据查看全部
-
RandomAccessFile (1)java提供的对文件内容的访问,既可以读文件,也可以写文件。 (2)支持随机访问文件,可以访问文件的任一位置。 【1】java文件模型:: (1)在硬盘上的文件是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官方说明)查看全部
-
序列化过程中子父类构造函数调用问题 一个类实现了序列化接口,那么其子类都可以进行序列化 一、父类实现了serializable接口,子类继承就可序列化。 1、子类在反序列化时,父类实现了序列化接口,则不会递归调用其构造函数。 二、父类未实现serializable接口,子类自行实现可序列化 2、子类在反序列化时,父类没有实现序列化接口,则会递归调用其构造函数。 【反序列化时】,向上递归调用构造函数会从【可序列化的一级父类结束】。即谁实现了可序列化(包括继承实现的),谁的构造函数就不会调用。 父类实现了serializable接口,子类继承就可序列化。 1、子类在反序列化时,其父类实现了序列化接口,则不会递归调用他们的构造函数。 2、若父类没有实现serializable接口,其子类自行实现反序列化,递归调用其构造函数 结论:反序列化时,谁实现了可序列化(包括继承实现的),谁的构造函数就不会调用。查看全部
-
transient 关键字:被transient修饰的元素,该元素不会进行jvm默认的序列化,但可以自己完成这个元素的序列化 注意:(1)在以后的网络编程中,如果有某些元素不需要传输,那就可以用transient修饰,来节省流量;对有效元素序列化,提高性能。 (2)可以使用writeObject自己完成这个元素的序列化。ArrayList就是用了此方法进行了优化操作。ArrayList最核心的容器Object[] elementData使用了transient修饰,但是在writeObject自己实现对elementData数组的序列化。只对数组中有效元素进行序列化。readObject与之类似。查看全部
-
FileReader和FileWriter不能增加编码参数,所以当项目和读取文件编码不同时,就会产生乱码。 这种情况下,只能回归InputStreamReader和OutputStreamWriter。 BufferedReader -- > readLine -> 读一行 不识别换行符,不会自动换行 BufferedWriter/PrintWriter -- > writeLine/println -> 写一行,不会自动换行/自动换行 在文件中换行,可以用newLine();实现查看全部
-
Java IO 输入输出流: 涉及到如下几个大问题: 1:编码问题 2:File类的使用 3:RandomAccessFile的使用 4:字节流的使用 5:字符流的使用 java.io.File类用于表示文件(目录) File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问查看全部
-
InputStream、OutputStream 抽象了应用程序读写数据方式(父类,抽象类) FileInputStream、FileOutputStream (子类) EOF=End 及文件结尾(读到-1)(is.read()=-1) 输入流基本方法 read(); 输入流基本方法 int b=in.read();读取一个字节无符号填充到int的低八位,前面的24位补零。(int是32位,一个字节8位)-1是EOF in.read(byte[] buf);读取数据填充到字节数组buf in.read(byte[] buf,int start,int size),同上,从buf的start位置开始存放size长度的数据 输出流基本方法 out.write(int b) 写出一个byte到流,b的低八位 out.write(byte][] buf) 将buf字节数组都写入到流 out.write(byte[] buf,int start,int size);同上,详见read对应方法 FileInputStream 具体实现了文件上读取数据查看全部
-
这个是读文件标准方法查看全部
-
java.io.File类用于表示文件(目录) File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件类型的内容的访问。 file.exists()判断文件是否存在 file.mkdir();创建文件夹 多级目录创建,mkdirs() file.delete();删除文件 file.idDirectory();判断是否是目录,是目录返回true,不是或者不存在都返回false file.isFile();判断是否是文件 file.createNewFile();创建文件 File file=new File("D:/javaio/日记.txt");等价于File file=new File("D:/javaio","日记.txt"); 常用的file对象API File file = new File(String Path);(路径\要用转义字符\\或者/或者File.separator获取系统分隔符 file //file.toString()的内容 file.getAbsolutePath(); getName(); getParent(); File.separator:静态成员,用于设置分隔符(所有系统均通用,不像/,windows适用,其他系统不一定适用) public String[] list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 exists()方法用于判断文件或目录是否存在 file.list() 返回的是 字符串数组 直接子的名称,不包含子目录下的内容String[] file.listFiles() 返回当前目录下的所有子目录和文件的文件数组名称File[] ======================================== 如果要遍历子目录下的内容就需要构造成File对象做递归操作 //throws IOException 回避了IO的抛出异常查看全部
-
gbk编码: 中文占用两个字节,英文占用一个字节 utf-8编码:中文占用三个字节,英文占用一个字节 java是双字节编码,是utf-16be编码 utf-16be编码:中文占用两个字节,英文占用两个字节 当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码查看全部
-
字节编码应注意!!!查看全部
-
JAVA I/O输入输出流查看全部
举报
0/150
提交
取消