#java读书笔记#IO流2
5、字符流经常使用基类的子类写入流: 构造方法:FileWriter(String fileName)根据给定的文件名构造1个 FileWriter 对象。FileWriter(String fileName,boolean append)根据给定的文件名和唆使是不是附加写入数据的 boolean 值来构造 FileWriter 对象。FileWriter(File file)根据给定的 File 对象构造1个 FileWriter 对象。FileWriter(File file,boolean append)根据给定的 File 对象构造1个 FileWriter 对象。FileWriter(FileDescriptor fd)
6、IO流常见需求: 字符流: 用字符写入流:FileWriterFileWriter fw = new FileWriter("g:filewriter.txt");fw.write("输入信息");fw.write("也能够写入字符数组".toCharArray());fw.flush();
(2)需求2:在原有文件上续写数据 FileWriter fw = new FileWriter("g:filewriter.txt",true);fw.write("还可以续写信息");fw.write("也能够写入字符数组".toCharArray());fw.flush();
(3)需求3:读取硬盘上的文本文件,并将数据打印在控制台 FileReader fr = new FileReader("g:filewriter.txt");**第1种读取方法:1个1个字节的读int ch = 0;ch = fr.read();sop((char)ch);fr.close();**第2种读取方法:利用数组来提高效力char[] buf = new char[1024];int len = 0;while((len = fr.read(buf))!=⑴){sop(new String(buf,len));}
(4)需求4:拷贝文本文件 利用缓冲区提高数据读写效力(无缓冲区就相当于1滴1滴的喝水,有缓冲区就相当于1杯1杯的喝水)BufferedReader bufr = new BufferedReader(new FileReader("g:filewriter.txt"));BufferedWriter bufw = new BufferedWriter(new FileWriter("d:copyfilewriter.txt"));String line = null;while((line = bufr.readLine())!=null){burw.write(line);bufw.newLine();bufw.flush();}bufr.close();
字节流:字节流写入时没有刷新 (1)需求1:在硬盘上创建1个文件并写入信息(字节流写入时没有刷新)FileOutputStream fos = new FileOutputStream("g:filestream.txt");fos.write(97);//写入1个字节,int:97代表写入char:afos.write("也能够写入字节数组".getBytes());//通常使用此种方式写入,直观!fos.close();
转换流: (1)需求1:读取1个键盘录入InputStream in = System.in;//创建1个键盘录入流,流不关则可以1直录入int by1 = in.read();//1次读1个字节int by2 = in.read();//1次读1个字节sop(by1);//假定键盘录入的是abcd,则打印asop(by2);//假定键盘录入的是abcd,则打印b
(2)需求2:键盘录入1行数据打印1行数据,如果录入的是over则结束录入 InputStream in = System.in;StringBuilder sb = new StringBuilder();while(true){int ch = in.read();if(ch=='r')continue;if(ch=='n'){String line = sb.toString();if("over".equals(line))break;sop(line.toUpperCase());//输出大写sb.delete(0.sb.length());//清除上1行录入的数据
(3)需求3:发现需求2中其实就是读1行的原理,故引入字节通向字符的桥梁:InputStreamReader BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));String line = null;while((line = bufr.readLine())!=null){if("over".equals(line))break;sop(line.toUpperCase());//输出大写}
(4)需求4:键盘录入数据并打印到控制台 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bufw = new BufferedWriter(new OntputStreamWriter(System.out));String line = null;while((line = bufr.readLine())!=null){if("over".equals(line))break;bufw.write(line.toUpperCase());bufw.newLine();bufw.flush();}bufr.close();
(5)需求5:将键盘录入的数据存储到硬盘文件 BufferedWriter bufw = new BufferedWriter(new OntputStreamWriter(System.out));改成:BufferedWriter bufw = new BufferedWriter(new OntputStreamWriter(new FileWriter("g:demo.txt")));即:BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bufw = new BufferedWriter(new OntputStreamWriter(new FileWriter("g:demo.txt")));String line = null;while((line = bufr.readLine())!=null){if("over".equals(line))break;bufw.write(line.toUpperCase());bufw.newLine();bufw.flush();}bufr.close();
(6)需求6:将硬盘文件的数据打印到控制台 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));改成:BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileReader("g:demo.txt")));即:BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileReader("g:demo.txt")));BufferedWriter bufw = new BufferedWriter(new OntputStreamWriter(System.out));String line = null;while((line = bufr.readLine())!=null){if("over".equals(line))break;bufw.write(line.toUpperCase());bufw.newLine();bufw.flush();}bufr.close();
流操作的难点:流对象很多,不知道具体用哪一个
构造方法: File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建1个新 File 实例。File(String parent,String child)根据 parent 路径名字符串和 child 路径名字符串创建1个新 File 实例。File(File parent,String child)根据 parent 抽象路径名和 child 路径名字符串创建1个新 File 实例。 方法摘要: (1)创建: boolean createNewFile()当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建1个新的空文件。boolean mkdir()创建1级文件夹boolean mkdirs()创建多级文件夹 (2)判断: boolean canExecute()测试利用程序是不是可以履行此抽象路径名表示的文件。boolean canRead()测试利用程序是不是可以读取此抽象路径名表示的文件。boolean canWrite()测试利用程序是不是可以修改此抽象路径名表示的文件。int compareTo(File pathname)按字母顺序比较两个抽象路径名。boolean isAbsolute()测试此抽象路径名是不是为绝对路径名。boolean isDirectory()测试此抽象路径名表示的文件是不是是1个目录。boolean isFile()测试此抽象路径名表示的文件是不是是1个标准文件。boolean isHidden()测试此抽象路径名指定的文件是不是是1个隐藏文件。boolean exists()测试此抽象路径名表示的文件或目录是不是存在。 (3)获得: String getParent()返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。File getParentFile()返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。String getName()返回由此抽象路径名表示的文件或目录的名称。String getPath()将此抽象路径名转换为1个路径名字符串。String getAbsolutePath()返回此抽象路径名的绝对路径名字符串。File getAbsoluteFile()返回此抽象路径名的绝对路径名情势。 (4)删除: boolean delete()删除此抽象路径名表示的文件或目录。oid deleteOnExit()在虚拟机终止时,要求删除此抽象路径名表示的文件或目录。(5)获得全部:(非常重要!!!)String[] list()返回1个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。String[] list(FilenameFilter filter)返回1个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。File[] listFiles()返回1个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |