day18 IO 字节流和字符流&正常关闭 转换流 Scanner Files

来源:互联网 发布:网络巫师泰剧中字05 编辑:程序博客网 时间:2024/05/05 09:30

java.io.File类:表示了文件和目录

Windows和Unix中路径使用和路径分割 \和/     java中\表示转义,所以需要\\    分隔符; :

java中使用常量来表示可以解决此问题 separator   separatorChar  和   pathSeparator  pathSeparatorChar      :    /

File构造方法

package file;import java.io.File;public class Demo1 {/** * @param args */public static void main(String[] args) {File f1 = new File("/User/luffy/123.txt");File f2 = new File("/User/luffy","123.txt");File f3 = new File("/User/luffy");new File(f3,"123.txt");}}

常用方式

package _01_File;import java.io.File;import java.io.IOException;public class Demo1 {public static void main(String[] args) throws Exception {File file = new File("test");System.out.println(file.exists());System.out.println(file.isDirectory());System.out.println(file.isFile());new File("test2.txt").createNewFile();new File("test/test2/test3").mkdirs();System.out.println(file.getName());//获取文件的相对路径System.out.println(file.getPath());//获取父目录  getParentFile()则返回的是File类型System.out.println(file.getParent());//获取绝对路径System.out.println(file.getAbsolutePath());//修改文件名称file.renameTo(new File("xxoo"));new File("delete.txt").delete();}}
listFiles()

package _01_File;import java.io.File;public class ListFilesDemo {public static void main(String[] args) {File file = new File("D:/图");listfiles(file);}static void listfiles(File file){if(file.isFile()){System.out.println(file);}if(file.isDirectory()){File[] fs = file.listFiles();if(null == fs){return;}for (File file2 : fs) {//System.out.println(file2);listfiles(file2);}}}}

IO

表示输入/输出
java中的流分几种

1,从流向上考虑:输入/输出流

2,从流的单位上考虑:字节流,字符流

3,从流的功能上将:节点流/缓冲流

流的四大基类(抽象类)

文件输出流

package _02_IO;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;public class FileOutputStreamDemo {public static void main(String[] args) throws Exception {File file = new File("out.txt");FileOutputStream fos = new FileOutputStream(file);String data = "hello io";fos.write(data.getBytes());fos.close();}}

文件输入流

package _02_IO;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;public class FileInputStreamDemo {public static void main(String[] args) throws Exception {File file = new File("out.txt");FileInputStream fis = new FileInputStream(file);//读取一个数据字节//int f1 = fis.read();//System.out.println(f1);//读取全部byte[] buffer = new byte[1024];int len = -1;while((len=fis.read(buffer)) != -1){System.out.println(len);System.out.println(new String(buffer,0,len));}fis.close();}}
使用字节流拷贝文件

package _02_IO;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;public class CopyFile {/** * @param args * @throws Exception  */public static void main(String[] args) throws Exception {File in =new File("out.txt");FileInputStream fis = new FileInputStream(in);FileOutputStream fos =new FileOutputStream("in.txt");byte[] buffer = new byte[2];int len=-1;while((len=fis.read(buffer)) != -1){fos.write(buffer,0,len);}fos.close();fis.close();}}
字符异常的处理

1.7以前

package _02_IO;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class CopyFileTry_Catch {/** * @param args */public static void main(String[] args) {FileInputStream fis = null;FileOutputStream fos = null;try{fis = new FileInputStream("out.txt");fos = new FileOutputStream("in.txt");byte[] buffer = new byte[2];int len=-1;while((len=fis.read(buffer)) != -1){fos.write(buffer, 0, len);}}catch(Exception e){e.printStackTrace();}finally{try {fos.close();} catch (IOException e) {e.printStackTrace();}finally{try {fis.close();} catch (IOException e) {e.printStackTrace();}}}}}
1.7后

package _02_IO;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class CoptFile_Try_Catch_17 {/** * @param args */public static void main(String[] args) {try(FileInputStream fis = new FileInputStream("out.txt");FileOutputStream fos = new FileOutputStream("in.txt");){int len = -1;byte[] buffer = new byte[2];while((len=fis.read(buffer)) != -1){fos.write(buffer,0,len);}}catch(IOException e){e.printStackTrace();}}}
Scanner

package _03_scanner;import java.io.File;import java.io.FileNotFoundException;import java.util.Scanner;public class Demo1 {public static void main(String[] args) {//demo1();Scanner sc = new Scanner(System.in);while(true){String name = sc.next();System.out.println("echo"+name);}}private static void demo1() throws FileNotFoundException {Scanner sc = new Scanner(new File("out.txt"));while(sc.hasNextLine()){System.out.println(sc.nextLine());}}}
字符流

一般有中文使用,任何时候可以使用字节流,一般操作二进制文件,就只能使用字节流
FileWriter

FileReader

字节流的拷贝文件

package writerAndreader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.Reader;import java.io.Writer;public class Demo1 {/** * @param args * @throws Exception  */public static void main(String[] args) throws Exception {Reader reader = new FileReader("op.txt");Writer writer = new FileWriter("mon.txt");char[] buffer = new char[1024];int len = -1;while((len=reader.read(buffer)) != -1){writer.write(buffer, 0, len);}writer.close();reader.close();}}
当只提供字节流时候可以通过InputStreamReader和OutputStreamWriter来进行转换

package writerAndreader;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.Reader;import java.io.Writer;public class Demo2 {/** * @param args * @throws Exception  */public static void main(String[] args) throws Exception {FileInputStream fis = new FileInputStream("op.txt");FileOutputStream fos = new FileOutputStream("qq.txt");//如果这里只有字节输入和输出 FileInputStream OutputStream//那么通过什么来转换呢Reader reader = new InputStreamReader(fis);Writer writer = new OutputStreamWriter(fos);//后面的就一样了int len = -1;char[] buffer = new char[1024];while((len=reader.read(buffer)) != -1){writer.write(buffer, 0, len);}writer.close();reader.close();}}
Files工具类

package writerAndreader;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.net.URI;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;public class Demo3 {/** * @param args * @throws Exception  */@SuppressWarnings("deprecation")public static void main(String[] args) throws Exception {InputStream in = new FileInputStream("op.txt");//这个是一种方法//Files.copy(in,Paths.get("xxoo.txt"));//这个是第二种方法URI uri = new File("tt.txt").toURI();Path path = Paths.get(uri);Files.copy(in,path);}}






0 0
原创粉丝点击