java之文件基本操作
1 使用 BufferedReader 在控制台读取字符
public static void readChar() throws IOException{ char c; InputStreamReader stream=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(stream); System.out.println("Enter characters,‘q‘ to quit"); do{ c=(char)br.read(); System.out.println(c); }while(c!=‘q‘); }
2 使用 BufferedReader 在控制台读取字符串
public static void readString() throws IOException { // 使用 System.in 创建 BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; System.out.println("Enter lines of text."); System.out.println("Enter ‘end‘ to quit."); do { str = br.readLine(); System.out.println("This is line "+str); } while(!str.equals("end")); }
3 从文件写数据和读取数据
public static void writeAndreadFile() throws IOException{ File f = new File("a.txt"); FileOutputStream fop = new FileOutputStream(f); // 构建FileOutputStream对象,文件不存在会自动新建 OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8"); // 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk writer.append("中文输入"); // 写入到缓冲区 writer.append("\r\n"); //换行 writer.append("English"); // 刷新缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入 writer.close(); //关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉 fop.close(); // 关闭输出流,释放系统资源 FileInputStream fip = new FileInputStream(f); // 构建FileInputStream对象 InputStreamReader reader = new InputStreamReader(fip, "UTF-8"); // 构建InputStreamReader对象,编码与写入相同 StringBuffer sb = new StringBuffer(); while (reader.ready()) { sb.append((char) reader.read()); // 转成char加到StringBuffer对象中 } System.out.println(sb.toString()); reader.close(); // 关闭读取流 fip.close(); // 关闭输入流,释放系统资源 }
4 创建目录
public static void creatDir() { String dirname = "./tmp/user/java/bin"; File d = new File(dirname); // 现在创建目录 d.mkdirs(); }
5 读取目录
public static void readDir() { String dirname = "./tmp"; File f1 = new File(dirname); if (f1.isDirectory()) { System.out.println( "Directory of " + dirname); String s[] = f1.list(); for (int i=0; i < s.length; i++) { File f = new File(dirname + "/" + s[i]); if (f.isDirectory()) { System.out.println(s[i] + " is a directory"); } else { System.out.println(s[i] + " is a file"); } } } else { System.out.println(dirname + " is not a directory"); } }
6 完整操作
package com.bnc.www; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; /** * Java 流(Stream)、文件(File)和IO * @author bnc * */ public class fileDome { // 使用 BufferedReader 在控制台读取字符 public static void readChar() throws IOException{ char c; InputStreamReader stream=new InputStreamReader(System.in); BufferedReader br=new BufferedReader(stream); System.out.println("Enter characters,‘q‘ to quit"); do{ c=(char)br.read(); System.out.println(c); }while(c!=‘q‘); } // 使用 BufferedReader 在控制台读取字符串 public static void readString() throws IOException { // 使用 System.in 创建 BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; System.out.println("Enter lines of text."); System.out.println("Enter ‘end‘ to quit."); do { str = br.readLine(); System.out.println("This is line "+str); } while(!str.equals("end")); } /** * 该流用于从文件读取数据,它的对象可以用关键字new来创建。 有多种构造方法可用来创建对象。 可以使用字符串类型的文件名来创建一个输入流对象来读取文件: * FileInputStream:InputStream f = new FileInputStream("C:/java/hello"); * 该类用来创建一个文件并向文件中写数据。 如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。 有两个构造方法可以用来创建FileOutputStream 对象。 使用字符串类型的文件名来创建一个输出流对象: * FileOutputStream:OutputStream f = new FileOutputStream("C:/java/hello") * @throws IOException */ public static void writeAndreadFile() throws IOException{ File f = new File("a.txt"); FileOutputStream fop = new FileOutputStream(f); // 构建FileOutputStream对象,文件不存在会自动新建 OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8"); // 构建OutputStreamWriter对象,参数可以指定编码,默认为操作系统默认编码,windows上是gbk writer.append("中文输入"); // 写入到缓冲区 writer.append("\r\n"); //换行 writer.append("English"); // 刷新缓存冲,写入到文件,如果下面已经没有写入的内容了,直接close也会写入 writer.close(); //关闭写入流,同时会把缓冲区内容写入文件,所以上面的注释掉 fop.close(); // 关闭输出流,释放系统资源 FileInputStream fip = new FileInputStream(f); // 构建FileInputStream对象 InputStreamReader reader = new InputStreamReader(fip, "UTF-8"); // 构建InputStreamReader对象,编码与写入相同 StringBuffer sb = new StringBuffer(); while (reader.ready()) { sb.append((char) reader.read()); // 转成char加到StringBuffer对象中 } System.out.println(sb.toString()); reader.close(); // 关闭读取流 fip.close(); // 关闭输入流,释放系统资源 } /** * 创建目录: * mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。 mkdirs()方法创建一个文件夹和它的所有父文件夹。 */ public static void creatDir() { String dirname = "./tmp/user/java/bin"; File d = new File(dirname); // 现在创建目录 d.mkdirs(); } /** * 读取目录 * 一个目录其实就是一个File对象,它包含其他文件和文件夹。 如果创建一个File对象并且它是一个目录,那么调用isDirectory( )方法会返回true。 可以通过调用该对象上的list()方法,来提取它包含的文件和文件夹的列表。 下面展示的例子说明如何使用list()方法来检查一个文件夹中包含的内容: */ public static void readDir() { String dirname = "./tmp"; File f1 = new File(dirname); if (f1.isDirectory()) { System.out.println( "Directory of " + dirname); String s[] = f1.list(); for (int i=0; i < s.length; i++) { File f = new File(dirname + "/" + s[i]); if (f.isDirectory()) { System.out.println(s[i] + " is a directory"); } else { System.out.println(s[i] + " is a file"); } } } else { System.out.println(dirname + " is not a directory"); } } public static void main(String[] args) throws IOException{ // 使用 BufferedReader 在控制台读取字符 readChar(); System.out.println("*******************************"); // 使用 BufferedReader 在控制台读取字符串 readString(); System.out.println("*******************************"); //从文件写数据和读取数据 writeAndreadFile(); System.out.println("*******************************"); //创建目录 //creatDir(); System.out.println("*******************************"); //读取目录 readDir(); } }
时间: 2024-10-09 14:50:56