/** * File类:文件的创建、删除、重命名、得到路径、创建时间等,是唯一与文件本身有关的操作类 */public class Main { public static void main(String[] args) { //File.separator 表示分隔符 File f1 = new File("c:" + File.separator + "fuck" + File.separator + "javaTest1.txt"); String s1 = File.pathSeparator; //路径分隔符 System.out.println(File.separator + " " + s1); boolean b1 = f1.exists(); //文件是否存在 System.out.println(b1); if (!b1) { try { boolean bt1 = f1.createNewFile(); //创建文件 System.out.println(bt1); } catch (IOException e) { e.printStackTrace(); } } System.out.println(f1.delete()); //删除文件 //System.out.println(""); 快捷键:打sout,然后中按Tab键 System.out.println(f1.getParent()); //得到文件的上一级路径 System.out.println(f1.isDirectory()); //判断是否是目录 File f2 = new File("c:" + File.separator + "fuck" + File.separator); String[] fname = f2.list(); //列出文件夹中的所有文件名 for(String i:fname) System.out.println(i); File[] files = f2.listFiles(); //列出文件中的所有文件,以file数组返回 for(File i:files) System.out.println(i.getName()+" "+i.length()); File f3 = new File("c:\\fuck\\JavaTest1"); System.out.println(f3.mkdir()); //创建文件夹 f3.delete(); System.out.println(f3.renameTo(new File("c:\\fuck\\JavaTest2"))); //重命名 }}
/** * 在某个目录中找到某个扩展名的所有文件 */public class Main { private static int num = 0; public static void findFile(File f,String extName){ if(f==null) return; else{ if(f.isDirectory()){ File[] fs = f.listFiles(); if(fs!=null){ for(File i:fs) findFile(i,extName); } }else{ String path = f.getPath().toLowerCase(); if(path.endsWith(extName)){ System.out.println(f.getPath()); ++num; } } } } public static void main(String[] args) { File f = new File("c:\\fuck\\"); String extName = ".cpp"; findFile(f,extName); System.out.println(num); }}
/** * IO流:输入输出流 * 流:一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。 * 流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 * 根据处理数据类型的不同分为:1.字符流 2.字节流 * 根据数据流向不同分为:1.输入流(程序从外部读取) 2.输出流(程序将数据写到外部) * * OutputStream类:接受输出字节并将这些字节发送到某个接收器 */public class Main { public static void main(String[] args) { //write1(); write2(); System.out.println("finished."); } /** * 字节输出流方式一:每次输出一个字节 */ public static void write1(){ OutputStream out = null; try { out = new FileOutputStream("c:\\fuck\\javaTest1.txt"); String info = "helloIO"; byte[] bs = info.getBytes(); for(int i=0;i
public class Main { public static void main(String[] args) { //read1();// read2(); read3(); System.out.println("finished."); } /** * 字节输入流的读取方式一:每次读取一个字节 */ public static void read1(){ InputStream in = null; try { in = new FileInputStream("c:\\fuck\\javaTest1.txt"); int bs = -1; //定义一个字节,-1表示没有数据 while((bs = in.read())!=-1){ System.out.print((char)bs); } System.out.println(""); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } finally{ try { in.close(); } catch (IOException ex) { ex.printStackTrace(); } } } /** * 字节输入流的读取方式二:一次性读取所有字节(适合不太大的文件) */ public static void read2(){ InputStream in = null; try { File f = new File("c:\\fuck\\javaTest1.txt"); in = new FileInputStream(f); byte[] bs = new byte[(int)f.length()]; //根据文件大小构造字节数组 int len = in.read(bs); System.out.println(new String(bs)); System.out.println("len = "+len); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } finally{ try { in.close(); } catch (IOException ex) { ex.printStackTrace(); } } } /** * 字节输入流的读取方式三:每次读取指定大小的字节(折中的方法) */ public static void read3(){ InputStream in = null; try { File f = new File("c:\\fuck\\javaTest1.txt"); in = new FileInputStream(f); byte[] bs = new byte[5]; int len = -1; //每次读取的实际长度 StringBuilder sb = new StringBuilder(); while((len=in.read(bs))!=-1){ sb.append(new String(bs,0,len)); } System.out.println(sb); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } finally{ try { in.close(); } catch (IOException ex) { ex.printStackTrace(); } } }}
/** * 字符流:底层也是用字节流实现的 */public class Main { public static void main(String[] args) { writer1(); System.out.println("finished."); } /** * 字符输出流方式一:以字符数组方式输出 */ public static void writer1(){ Writer out = null; try { File f = new File("c:\\fuck\\javaTest1.txt"); out = new FileWriter(f,true); //true表示追加方式 String info = "good good study, day day up."; //out.write(info.toCharArray()); out.write(info); } catch (IOException ex) { ex.printStackTrace(); } finally{ try{ out.close(); } catch (IOException ex) { ex.printStackTrace(); } } }}
/** * 字符流:底层也是用字节流实现的 */public class Main { public static void main(String[] args) { //byteReader(); //输出一堆乱码 reader1(); System.out.println("finished."); } /** * 字符输入流方式一:使用指定大小的字符数组输入 */ public static void reader1(){ File f = new File("c:\\fuck\\javaTest1.txt"); try { Reader in = new FileReader(f); char[] cs = new char[10]; int len = -1; StringBuilder sb = new StringBuilder(); while((len=in.read(cs))!=-1){ sb.append(new String(cs,0,len)); } in.close(); System.out.println(sb); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } /** * 使用字节流读取文本文件 */ public static void byteReader(){ File f = new File("c:\\fuck\\javaTest1.txt"); try { InputStream in = new FileInputStream(f); byte[] bs = new byte[10]; int len = -1; StringBuilder sb = new StringBuilder(); while((len=in.read(bs))!=-1){ sb.append(new String(bs,0,len)); } in.close(); System.out.println(sb); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } }}
/** * 字符流:底层也是用字节流实现的 * :根据指定的编码,将1个或多个字节转化为java里的unicode字符,然后进行操作 * 字符操作一般用Writer,Reader等,字节操作一般用InputStream,OutputStream以及各种包装类,比如: * BufferedInputStream和BufferedOutputStream等 * 总结:如果你确认你要处理的流是可打印的字符,那么使用字符流会简单些,如果不确认,那么用字节流总是不会错的。 */public class Main { public static void main(String[] args) { //byteReader(); //输出一堆乱码 reader1(); System.out.println("finished."); } /** * 字符输入流方式一:使用指定大小的字符数组输入 */ public static void reader1(){ File f = new File("c:\\fuck\\javaTest1.txt"); try { Reader in = new FileReader(f); char[] cs = new char[10]; int len = -1; StringBuilder sb = new StringBuilder(); while((len=in.read(cs))!=-1){ sb.append(new String(cs,0,len)); } in.close(); System.out.println(sb); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } /** * 使用字节流读取文本文件 */ public static void byteReader(){ File f = new File("c:\\fuck\\javaTest1.txt"); try { InputStream in = new FileInputStream(f); byte[] bs = new byte[10]; int len = -1; StringBuilder sb = new StringBuilder(); while((len=in.read(bs))!=-1){ sb.append(new String(bs,0,len)); } in.close(); System.out.println(sb); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } }}
/** * 指定一个盘符下的文件,把该文件复制到指定的目录下。 */public class Main { public static void main(String[] args) { copyFile("c:\\fuck\\javaTest1.txt","c:\\fuck\\javaTest2.txt"); copyFile("c:\\fuck\\ning.bmp","c:\\fuck\\ning2.txt"); //把.txt改成.bmp就可以看了 System.out.println("finished."); } public static void copyFile(String src,String des){ File f1 = new File(src); File f2 = new File(des); InputStream in = null; OutputStream out = null; try { in = new FileInputStream(f1); out = new FileOutputStream(f2); byte[] bs = new byte[105]; int len = -1; while((len=in.read(bs))!=-1){ out.write(bs,0,len); } } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } finally{ try { in.close(); out.close(); } catch (IOException ex) { ex.printStackTrace(); } } }}
/** * 转换流:将一个字节流转换为字符流,也可以将一个字符流转换为字节流 * OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式,可使用指定的charset将要写入流 * 中的字符编码成字节。 * InputStreamReader:将输入的字节流转换为字符流输入形式,使用指定的charset读取字节并将其解码为 * 字符。 */public class Main { public static void main(String[] args) { //writer(); reader(); System.out.println("finished."); } public static void writer(){ //把字符流转成字节流 try { OutputStream out = new FileOutputStream("c:\\fuck\\javaTest1.txt"); String info = "你好吗abc."; Writer w1 = new OutputStreamWriter(out); //通过字节输出流构造一个字符输出流 w1.write(info); w1.close(); out.close(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } public static void reader(){ //把字节流转成字符流 try { InputStream in = new FileInputStream("c:\\fuck\\javaTest1.txt"); Reader r1 = new InputStreamReader(in); char[] cs = new char[105]; int len = -1; StringBuilder sb = new StringBuilder(); while((len=r1.read(cs))!=-1){ sb.append(new String(cs,0,len)); } r1.close(); in.close(); System.out.println(sb); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } }}