I/O————字节流
InputStream字节输入流
OutputStream字节输出流
用于以字节的形式读取和写入数据
下面是使用
字节输入流读取文件
字节输出流写入文件
文件可能不存在,所以使用try catch
public class StreamTest { public static void main(String[] args) { //准备一个文件文件内容是LOL,用来 字节输入流读取文件 File file1 = new File("D:\\lolfilder\\lol.exe\\lol.txt"); //准备一个空文件,用来字节输出流写入文件 File file2 = new File("D:\\lolfilder\\lol.exe\\lol1.txt"); try { FileInputStream fis = new FileInputStream(file1); FileOutputStream fos = new FileOutputStream(file2); byte[] all = new byte[(int) file1.length()]; byte[] all2 = {65,97}; fis.read(all); fos.write(all2); for(byte temp:all) { System.out.println(temp); } fis.close(); fos.close(); } catch (Exception e) { e.printStackTrace(); } }
运行结果是:"LOL"的ASCII码值
空文件lol1.txt写入了 Aa
拆分文件与合并文件
拆分文件
将文件按照指定大小分割成多个文件,并且新文件的命名规则为 filename_no.txt
主要使用了FileInputStream中的read方法
public class FileSplitTest { private static final int SPLIT_SIZE=100; public static void main(String[] args) { File file = new File("D:\\lolfilder\\lol.exe\\filesplitdemo.txt"); splitFile(file, SPLIT_SIZE); } public static void splitFile(File file,int size) { try/*(FileInputStream fis = new FileInputStream(file);) 可以将流定义在try中,当try,catch或finally结束后会自动关闭流,这是jdk7之后的技术 */ { FileInputStream fis = new FileInputStream(file); byte []fisb = new byte[size]; //fis.read(fisb); for(int i=1;fis.read(fisb, 0, size)>0;i++) { File subFile = new File(file.getAbsolutePath().replace(".txt", "_" + i + ".txt")); FileOutputStream fos = new FileOutputStream(subFile); fos.write(fisb); fos.close(); } fis.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
合并文件
public static void main(String[] args) { int i = 1; //建立输入文件 File outFile = new File("D:\\lolfilder\\lol.exe\\mergedfile.txt"); try { //建立输出流 FileOutputStream fos = new FileOutputStream(outFile); //通过i依次读取 while(new File("D:\\lolfilder\\lol.exe\\filesplitdemo_"+i+".txt").exists()) { File f = new File("D:\\lolfilder\\lol.exe\\filesplitdemo_"+i+".txt"); FileInputStream fis = new FileInputStream(f); byte[] temp = new byte[fis.available()]; fis.read(temp); fos.write(temp); i++; fis.close(); } fos.close(); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }