IO(输入输出)来读取和写入,把数据写入内存是输入流,把数据从内存中读取出来是输出流
IO:根据处理的数据类型可分为字节流和字符流
1.字节流可以处理所有数据类型的数据,在java中以Stream结尾
2.字符流处理文本数据,在java中以Reader和Writer结尾
1.文件的基本操作
import java.io.File; import java.io.IOException; public class IOTest { public static void main(String[] args) { // 创建一个文件路径 File file = new File("D:\IOTest\testData.txt"); if (file.exists()) { // 得到文件的路径 System.out.println(file.getAbsolutePath()); // 得到文件的大小 System.out.println(file.length()); } // 创建文件 File file1 = new File("d:\IOTest\iotest.txt"); if (!file1.exists()) { try { file1.createNewFile(); } catch (IOException e) { e.printStackTrace(); } }else { System.out.println("文件已存在"); } // 创建文件夹 File file2 = new File("d:\IOTest\createFile"); if (file2.isDirectory()) { System.out.println("文件夹已存在"); }else { file2.mkdir(); } // 列出文件夹下所有文件 File file3 = new File("d:\IOTest"); if (file3.isDirectory()) { File lists[] = file3.listFiles(); for (int i=0; i<lists.length; i++) { System.out.println(lists[i].getName()); } } System.out.println("Main end."); } }
2.1 字节流 FileInputstream
import java.io.FileInputStream; public class IOTest2 { public static void main(String[] args) { FileInputStream fis = null; try { fis = new FileInputStream("d:\IOTest\testData.txt"); // 定义一个数组,相当于缓存 byte bytes[] = new byte[1024]; int n = 0; while ((n = fis.read(bytes)) != -1) { // System.out.println(n); String str = new String(bytes, 0, n); System.out.print(str); } } catch (Exception e) { e.printStackTrace(); }finally { try { fis.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }
2.2 字节流 FileOutputStream
import java.io.FileNotFoundException; import java.io.FileOutputStream; public class IOTest3 { public static void main(String[] args) throws FileNotFoundException { FileOutputStream fos = null; try { fos = new FileOutputStream("d:\IOTest\testData.txt"); String str = "hello!!!"; byte bytes[] = str.getBytes(); fos.write(bytes); } catch (Exception e) { e.printStackTrace(); }finally { try { fos.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }