7,IO

xiaoxiao2021-02-28  92

package caokangnsd; import java.io.BufferedReader; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStreamWriter; import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.io.PrintWriter; import java.io.RandomAccessFile; import java.io.SequenceInputStream; import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.Scanner; public class FileAndStream { public static void main(String[] args) throws IOException, ClassNotFoundException { +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /* * File类只用作创建和删除非多重目录的文件 */ File file1 = new File("./src/main/java/fanchuanqi/file1.txt"); file1.createNewFile();// OK--delete File file2 = new File("./src/main/java/fanchuanqi/a/b");// 重新创建同名的a也不会覆盖 file2.mkdir();// a/b,c File file3 = new File("./src/main/java/fanchuanqi/f1.txt"); file1.renameTo(file3);// rename//OK//f1.txt System.out.println(file3.isFile()); System.out.println(file2.isDirectory()); System.out.println(file1.exists()); System.out.println(file2.canRead()); System.out.println(file2.canWrite()); file1.createNewFile();// 重新 创建file1 file1.delete();// OK File file4 = new File("./src/main/java/fanchuanqi/a"); // File[] files = file4.listFiles(new FileFilter() {// 文件列表的选择器FileFilter public boolean accept(File pathname) { // TODO Auto-generated method stub return pathname != null; } }); System.out.println(Arrays.toString(files)); ---------------------------------------------------------------------------------------------- /* * RandomAccessFile类用来访问修改文件,两种读写模式r,rw */ // 首先访问文件,若 文件不存在则 创建文件 RandomAccessFile raf = new RandomAccessFile("./src/main/java/fanchuanqi/f2.txt", "rw"); raf.write(50);// raf.write('a');// long a = raf.getFilePointer();// 2 System.out.println(a); raf.seek(4); String str = "haha\nheihei\nhehe\nOK"; raf.write(str.getBytes("utf-8"));// raf.write(raf.read());// 读取一个写入 raf.seek(0); System.out.println(raf.readChar()); byte[] bs = new byte[10 * 1024];// 10kb int len = raf.read(bs); System.out.println(new String(bs, 0, len));// raf.close(); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /* * InputStream输入流 OutputStream输出流 节点流: 处理流:封装拓展低级流 * FileInputStream,FileOutputStream,演示读写文件 */ FileInputStream fis = new FileInputStream("./src/main/java/fanchuanqi/支柱歌词.txt"); FileOutputStream fos = new FileOutputStream("./src/main/java/fanchuanqi/f3.txt",true); byte[] bs2 = new byte[1000]; int len2 = 0; while ((len2 = fis.read(bs2)) != -1) { fos.write(bs2, 0, len2); } fos.close(); fis.close(); ---------------------------------------------------------------------------------------------- /* * BufferedInputStream BufferedOutputStream 自动缓存约8kb的内容,要基于低级流使用 * flush */ /* Transient修饰的属性可以免除序列化 * 对象流的使用ObjectInputStream,ObjectOutputStream */ ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("./src/main/java/fanchuanqi/person.obj")); Person p = new Person("ck", 12, "nan"); oos.writeObject(p); ObjectInputStream ois = new ObjectInputStream(new FileInputStream("./src/main/java/fanchuanqi/person.obj")); Object o = ois.readObject(); Person p2 = (Person) o; System.out.println(p2.toString()); ---------------------------------------------------------------------------------------------- /* * 转换流//字符流和字节流的转换可以在这里 更改字符集 InputStreamReader(InputStream is,"utf-8"); * OutputStreamWriter */ /* * 字符流 主要用于使用字符流里的方法用来读取字符串 BufferedReader,BufferedWriter PrintWriter * 其中PrintWriter包括了字节流和转换流 举例 */ FileOutputStream fos2 = new FileOutputStream("./src/main/java/fanchuanqi/f4.txt"); InputStreamReader isr = new InputStreamReader(new FileInputStream("./src/main/java/fanchuanqi/f3.txt"), "GBK"); BufferedReader br = new BufferedReader(isr); OutputStreamWriter osw = new OutputStreamWriter(fos2, "GBK"); PrintWriter pw = new PrintWriter(osw, true);// 自动行刷新 String str1; while ((str1 = br.readLine()) != null) { pw.println(str1); } pw.close(); br.close(); System.out.println("OK"); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /* * 管道流PipedOutputStream,PipedInputStream用于线程之间的通信 */ Send send=new Send(); Accept accept=new Accept(); send.getPos().connect(accept.getPis()); send.start(); accept.start(); ---------------------------------------------------------------------------------------------- /* * Scanner类  */ Scanner scan=new Scanner(System.in); String s=scan.nextLine(); System.out.println(s); Scanner scann=new Scanner(new File("./src/main/java/fanchuanqi/f1.txt")); if(scann.hasNextLine()) { System.out.println(scann.nextLine()); } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /* * 合并流 */ SequenceInputStream sis =  new SequenceInputStream(new FileInputStream("aa"), new FileInputStream("bb")); } } class Send extends Thread { PipedOutputStream pos= new PipedOutputStream(); public void run() { String str = "hahaha"; try { pos.write(str.getBytes("utf-8")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public PipedOutputStream getPos() { return pos; } } class Accept extends Thread { PipedInputStream pis=new PipedInputStream(); public void run() { byte[] bs=new byte[100]; try { int len=pis.read(bs); String str=new String(bs,0,len,"utf-8"); System.out.println(str); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public PipedInputStream getPis() { return pis; } }

 

转载请注明原文地址: https://www.6miu.com/read-2627646.html

最新回复(0)