资源预览内容
第1页 / 共39页
第2页 / 共39页
第3页 / 共39页
第4页 / 共39页
第5页 / 共39页
第6页 / 共39页
第7页 / 共39页
第8页 / 共39页
第9页 / 共39页
第10页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第14章 输入 输出 档案 位串流 字符串流File类别 不同的操作系统对于文件系统路径的设定 各有差别 Windows Linux“C:WorkspaceCH14“/home/justin/workspace/ch14“File类别 File实例用作一个档案或目录的抽象表示File file = new File(args0);if(file.isFile() /是否为档案System.out.println(args0 + “檔案“);System.out.print(file.canRead() ?“可读“ :“不可读“);System.out.print(file.canWrite() ?“可写“ :“不可写“);System.out.println(file.length() +“位組“);File类别else /列出所有的档案及目录File files = file.listFiles();ArrayList fileList =new ArrayList();for(int i = 0; i 0) list.add(User) objInputStream.readObject();objInputStream.close();ObjectInputStream、ObjectOutputStream/附加模式ObjectOutputStream objOutputStream =new ObjectOutputStream(new FileOutputStream(file, true) /如果要附加对象至档案后/必须重新定义这个方法protected void writeStreamHeader()throws IOException ;for(Object obj : objs) /将对象写入档案objOutputStream.writeObject(obj);objOutputStream.close();SequenceInputStream 可以看作是数个InputStream对象的组合 当一个InputStream对象的内容读取完毕后 ,它就会取出下一个InputStream对象,直 到所有的InputStream物件都读取完毕SequenceInputStream/建立SequenceInputStream/并使用BufferedInputStreamBufferedInputStream bufInputStream =new BufferedInputStream(new SequenceInputStream(enumation),8192);BufferedOutputStream bufOutputStream =new BufferedOutputStream(new FileOutputStream(filename), 8192);byte data = new byte1;/读取所有档案数据并写入目的地档案while(bufInputStream.read(data) != -1)bufOutputStream.write(data);bufInputStream.close();bufOutputStream.flush();bufOutputStream.close();PrintStream 使用java.io.PrintStream可以自动为您进行 字符转换的动作 默认会使用操作系统的编码来处理对应的 字符转换动作PrintStream printStream = new PrintStream(new FileOutputStream(new File(“test.txt“);printStream.println(1);printStream.close();ByteArrayInputStream、ByteArrayOutputStream ByteArrayInputStream可以将一个数组当作 串流输入的来源 ByteArrayOutputStream则可以将一个位数 组当作串流输出的目的地PushbackInputStream 拥有一个PushBack缓冲区 从PushbackInputStream读出数据后,只要 PushBack缓冲区没有满,就可以使用 unread()将资料推回串流的前端Reader、Writer 在处理串流数据时,会根据系统默认的字 符编码来进行字符转换 Reader、Writer是抽象类,在进行文本文件 的字符读写时真正会使用其子类别 可以直接在建构Reader的实例时,自行指 定读取时的编码InputStreamReader reader =new InputStreamReader(byteArrayStream, “Big5“);InputStreamReader、OutputStreamWriter 要对InputStream、OutputStream进行字符 处理,可以使用InputStreamReader、 OutputStreamWriter为加上字符处理的功能FileInputStream fileInputStream =new FileInputStream(args0);/为FileInputStream加上字符处理功能InputStreamReader inputStreamReader =new InputStreamReader(fileInputStream);FileOutputStream fileOutputStream =new FileOutputStream(“backup_“ + args0);/为FileOutputStream加上字符处理功能OutputStreamWriter outputStreamWriter =new OutputStreamWriter(fileOutputStream);InputStreamReader、OutputStreamWriterint ch = 0;/以字符方式显示档案内容while(ch = inputStreamReader.read() != -1) System.out.print(char) ch);outputStreamWriter.write(ch);System.out.println();inputStreamReader.close();outputStreamWriter.close(); 可以自行指定字符编码InputStreamReader inputStreamReader =new InputStreamReader(fileInputStream, “Big5“);FileReader、FileWriter 想要存取的是一个文本文件,可直接使用 java.io.FileReader、java.io.FileWriter类别FileReader fileReader =new FileReader(args0);FileWriter fileWriter =new FileWriter(args0 + “.txt“);int in = 0;char wlnChar = r, n;while(in = fileReader.read() != -1) if(in = n) /写入“rn“fileWriter.write(wlnChar);elsefileWriter.write(in);fileReader.close();fileWriter.close();BufferedReader、BufferedWriter System.in是个位串流,为了转换为字符串 流,可使用InputStreamReader为其进行字 符转换,然后再使用BufferedReader为其 增加缓冲功能BufferedReader reader =new BufferedReader(new InputStreamReader(System.in);BufferedReader、BufferedWriter/缓冲FileWriter字符输出串流BufferedWriter bufWriter =new BufferedWriter(new FileWriter(args0);String input = null;/每读一行进行一次写入动作while(!(input =bufReader.readLine().equals(“quit“) bufWriter.write(keyin);/ newLine()方法写入与操作系统相依的换行字符bufWriter.newLine();PrintWriter 除了接受OutputStream实例作为自变量之 外,PrintWriter还可以接受Writer对象作为 输出的对象CharArrayReader、CharArrayWriter 可以将字符数组当作字符数据输出或输入 的来源PushbackReader 拥有一个PushBack缓冲区,只不过 PushbackReader所处理的是字符 只要PushBack缓冲区没有满,就可以使用 unread()将资料回推回串流的前端
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号