Java 流(Stream)、文件(File)和IO
2018-04-01 13:01
316 查看
Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流,
BufferedReader 对象创建后,我们便可以使用 read() 方法从控制台读取一个字符,或者用 readLine() 方法读取一个字符串。
如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。
其他输出流
DataOutputStream
ByteArrayOutputStream
上面的程序首先创建文件test.txt,并把给定的数字以二进制形式写进该文件,同时输出到控制台上。
以上代码由于是二进制写入,可能存在乱码,你可以使用以下代码实例来解决
mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
mkdirs()方法创建一个文件夹和它的所有父文件夹。
下面的例子创建 “/tmp/user/java/bin”文件夹:
编译并执行上面代码来创建目录 “/tmp/user/java/bin”。
注意: Java 在 UNIX 和 Windows 自动按约定分辨文件路径分隔符。如果你在 Windows 版本的 Java 中使用分隔符
(/) ,路径依然能够被正确解析。 读取目录
一个目录其实就是一个 File 对象,它包含其他文件和文件夹。
如果创建一个 File 对象并且它是一个目录,那么调用 isDirectory() 方法会返回 true。
可以通过调用该对象上的 list() 方法,来提取它包含的文件和文件夹的列表。
下面展示的例子说明如何使用 list() 方法来检查一个文件夹中包含的内容:
以上实例编译运行结果如下:
目录 /tmp
bin 是一个目录
lib 是一个目录
demo 是一个目录
test.txt 是一个文件
README 是一个文件
index.html 是一个文件
include 是一个目录
删除目录可以使用—— deleteFolder(fileFoldet)。
以下代码会删除目录/tmp/java/,即便目录不为空。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
Java 流(Stream)
读取控制台输入
Java 的控制台输入由 System.in 完成。为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流,
BufferedReader 对象创建后,我们便可以使用 read() 方法从控制台读取一个字符,或者用 readLine() 方法读取一个字符串。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); dataType c=(dataType)br.read();
控制台输出
system.out.write(), system.out.print() 和 system.out.println() 方法,读写文件
FileInputStream
可以使用字符串类型的文件名来创建一个输入流对象来读取文件:FileOutputStream
该类用来创建一个文件并向文件中写数据。如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。
/***************FileInputStream***************/ InputStream f = new FileInputStream("C:/java/hello"); ////或者使用文件对象来创建输入流 File f = new File("C:/java/hello"); InputStream out = new FileInputStream(f); /***************FileOutputStream***************/ OutputStream f = new FileOutputStream("C:/java/hello") //或者使用文件对象来创建输出流 File f = new File("C:/java/hello"); OutputStream f = new FileOutputStream(f);
其他输出流
DataOutputStream
ByteArrayOutputStream
//fileStreamTest.java 文件代码: import java.io.*; public class fileStreamTest{ public static void main(String args[]){ try{ byte bWrite [] = {11,21,3,40,5}; OutputStream os = new FileOutputStream("test.txt"); for(int x=0; x < bWrite.length ; x++){ os.write( bWrite[x] ); // writes the bytes } os.close(); InputStream is = new FileInputStream("test.txt"); int size = is.available(); for(int i=0; i< size; i++){ System.out.print((char)is.read() + " "); } is.close(); }catch(IOException e){ System.out.print("Exception"); } } }
上面的程序首先创建文件test.txt,并把给定的数字以二进制形式写进该文件,同时输出到控制台上。
以上代码由于是二进制写入,可能存在乱码,你可以使用以下代码实例来解决
//文件名 :fileStreamTest2.java import java.io.*; public class fileStreamTest2{ public static void main(String[] args) throws IOException { File f = new File("a.txt"); 4000 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(); // 关闭输入流,释放系统资源 } }
Java中的目录
创建目录:
File类中有两个方法可以用来创建文件夹:mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
mkdirs()方法创建一个文件夹和它的所有父文件夹。
下面的例子创建 “/tmp/user/java/bin”文件夹:
//CreateDir.java 文件代码: import java.io.File; public class CreateDir { public static void main(String args[]) { String dirname = "/tmp/user/java/bin"; File d = new File(dirname); // 现在创建目录 d.mkdirs(); } }
编译并执行上面代码来创建目录 “/tmp/user/java/bin”。
注意: Java 在 UNIX 和 Windows 自动按约定分辨文件路径分隔符。如果你在 Windows 版本的 Java 中使用分隔符
(/) ,路径依然能够被正确解析。 读取目录
一个目录其实就是一个 File 对象,它包含其他文件和文件夹。
如果创建一个 File 对象并且它是一个目录,那么调用 isDirectory() 方法会返回 true。
可以通过调用该对象上的 list() 方法,来提取它包含的文件和文件夹的列表。
下面展示的例子说明如何使用 list() 方法来检查一个文件夹中包含的内容:
//DirList.java 文件代码: import java.io.File; public class DirList { public static void main(String args[]) { String dirname = "/tmp"; File f1 = new File(dirname); if (f1.isDirectory()) { System.out.println( "目录 " + 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] + " 是一个目录"); } else { System.out.println(s[i] + " 是一个文件"); } } } else { System.out.println(dirname + " 不是一个目录"); } } }
以上实例编译运行结果如下:
目录 /tmp
bin 是一个目录
lib 是一个目录
demo 是一个目录
test.txt 是一个文件
README 是一个文件
index.html 是一个文件
include 是一个目录
删除目录或文件
删除文件可以使用 java.io.File.delete() 方法——file.delete();删除目录可以使用—— deleteFolder(fileFoldet)。
以下代码会删除目录/tmp/java/,即便目录不为空。
/*测试目录结构: /tmp/java/ |-- 1.log |-- test DeleteFileDemo.java 文件代码: */ import java.io.File; public class DeleteFileDemo { public static void main(String args[]) { // 这里修改为自己的测试目录 File folder = new File("/tmp/java/"); deleteFolder(folder); } //删除文件及目录 public static void deleteFolder(File folder) { File[] files = folder.listFiles(); if(files!=null) { for(File f: files) { if(f.isDirectory()) { deleteFolder(f); } else { f.delete(); } } } folder.delete(); } }
相关文章推荐
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java流(Stream)、文件(File)和IO
- Java流(Stream)、文件(File)和IO
- JAVA学习记录(三)——Java 流(Stream)、文件(File)和IO
- Java流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- java IO 流Stream 序列化Serializable 文件File
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java 流(Stream)、文件(File)和IO
- Java烧脑驴游(十四)--流(Stream)、文件(File)和IO