Java File和FileStream类区别在什么城投债和地方债的区别??

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
控制台输入输出:
JDK 5 后的版本我们也可以使用&&类来获取控制台的输入。
读写文件:
FileInputStream
方法1:可以使用字符串类型的文件名来创建一个输入流对象来读取文件
InputStream f = new FileInputStream("C:/java/hello");
方法2:也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:
File f = new File("C:/java/hello");
InputStream f = new FileInputStream(f);
FileOutputStream
方法1:使用字符串类型的文件名来创建一个输出流对象:
OutputStream f = new FileOutputStream("C:/java/hello")
方法2:也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:
File f = new File("C:/java/hello"); OutputStream f = new FileOutputStream(f);
//文件名 :fileStreamTest2.java
import java.io.*;
public class fileStreamTest2{
public static void main(String[] args) 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();
// 关闭输入流,释放系统资源
还有一些关于文件和I/O的类,我们也需要知道:
Java中的目录
创建目录:
File类中有两个方法可以用来创建文件夹:
mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
mkdirs()方法创建一个文件夹和它的所有父文件夹。
下面的例子创建 "/tmp/user/java/bin"文件夹:
import java.io.F
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() 方法来检查一个文件夹中包含的内容:
import java.io.F
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. i++) {
File f = new File(dirname + "/" + s[i]);
if (f.isDirectory()) {
System.out.println(s[i] + " 是一个目录");
System.out.println(s[i] + " 是一个文件");
System.out.println(dirname + " 不是一个目录");
以上实例编译运行结果如下:
bin 是一个目录
lib 是一个目录
demo 是一个目录
test.txt 是一个文件
README 是一个文件
index.html 是一个文件
include 是一个目录
参考资料:
阅读(...) 评论()Java处理文件的方法(FileInputStream、FileReader、File*)
我的图书馆
Java处理文件的方法(FileInputStream、FileReader、File*)
FileInputStream,FileReader,InputStreamReader File,FileInputStream,FileReader,InputStreamReader,BufferedReader的使用和区别&参考资料:&&《core java》12章&&使用Java操作文本文件的方法详解&&FileReader 是什么类?和 FileInputStream 有什么不同???&自己的整理和领会:引言:&C 语言只需要一个File*就可以了,与C不同,java有一系列流类型,其数量超过60种。类库的设计者声称:“有足够的理由为用户提供丰富的流类型的选择:这样做可以减少程序的错误。”例如,在C语言种,许多人认为“将输出流写入一个只读模式的文件”是很常见的错误。(事实上,这并不常见。)我们认为在C++语言中,流接口设计者避免程序出错的主要“工具”是小心谨慎的态度,在java语言中更是如此。流库的高度复杂性迫使程序设计人员谨小慎微。<font color="#. File类&1)File类介绍(《core java》638页)&File类封装了对用户机器的文件系统进行操作的功能。例如,可以用File类获得文件上次修改的时间移动,或者对文件进行删除、重命名。换句话说,流类关注的是文件内容,而File类关注的是文件在磁盘上的存储。&File类的主要方法有:getName(),getCanonicalFile(),lastModified(),isDerector(),isFile(),getPath()等;<font color="#)File类与FileInputStream类的区别:&流类关注的是文件内容,而File类关注的是文件在磁盘上的存储。File不属于文件流,只能代表一个文件或是目录的路径名而已。提示:(《core java》639页)&如果处理文件或者目录名,就应该使用File对象,而不是字符串。例如,File类的equals方法知道一些文件系统对大小写是敏感的,目录尾的“/”字符无关紧要。自己的领会:&FileInputStream 类或者FileReader类的构造函数有多个,其中典型的两个分别为:一个使用File对象为参数;而另一个使用表示路径的String对象作为参数;自己以前一直觉得直接用了String指定路径就可以了,一直不明白为什么很多人都先构造一个File对象,现在终于明白了,“如果处理文件或者目录名,就应该使用File对象,而不是字符串。”!2. FileInputStream类&1)FileInputStream类介绍:&以字节为单位(非unicode)的流处理。字节序列即:二进制数据。与编码无关,不存在乱码问题。&FileInputStream类的主要方法有:&Read(),read(byte[] b),read(byte[],int off,int len),available();2)FileInputStream类与FileReader类的区别:&两个类的构造函数的形式和参数都是相同的,参数为File对象或者表示路径的String,它们到底有何区别呢?&&Readers and Writers work only on line based character data, so plain text files.&For anything else, you MUST use Streams.&&JDK5 API:&FileInputStream is meant for reading streams of raw bytes such as image data. For reading streams of characters, consider using FileReader.&FileReader is meant for reading streams of characters. For reading streams of raw bytes, consider using a FileInputStream.&FileInputStream:以字节流方式读取;FileReader:把文件转换为字符流读入;&&InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。&&Reader类及其子类提供的字符流的读取char(16位,unicode编码),inputStream及其子类提供字节流的读取byte(8位),所以FileReader类是将文件按字符流的方式读取,FileInputStream则按字节流的方式读取文件;InputStreamReader 可以将读如stream转换成字符流方式,是reader和stream之间的桥梁&&最初Java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类。&&FileInputStream类以二进制输入/输出,I/O速度快且效率搞,但是它的read()方法读到的是一个字节(二进制数据),很不利于人们阅读。&&而FileReader类弥补了这个缺陷,可以以文本格式输入/输出,非常方便;比如可以使用while((ch = filereader.read())!=-1 )循环来读取文件;可以使用BufferedReader的readLine()方法一行一行的读取文本。&&当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader, InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader,它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。&&FileReader与InputStreamReader涉及编码转换(指定编码方式或者采用os默认编码),可能在不同的平台上出现乱码现象!而FileInputStream以二进制方式处理,不会出现乱码现象.&3)自己的领会:&&如果处理纯文本文件,建议使用FileReader,因为更方便,也更适合阅读;但是要注意编码问题!&&其他情况(处理非纯文本文件),FileInputStream是唯一的选择;FileInputStream是进Socket通讯时会用到很多,如将文件流是Stream的方式传向服务器!<font color="#. FileReader类&1) FileReader类介绍:&InputStreamReader类的子类,所有方法(read()等)都从父类InputStreamReader中继承而来;&2) 与InputStreamReader类的区别:&&自己的领会:&该类与它的父类InputStreamReader的主要不同在于构造函数,主要区别也就在于构造函数!从InputStreamReader的构造函数中看到,参数为InputStream和编码方式,可以看出,当要指定编码方式时,必须使用InputStreamReader类;而FileReader 构造函数的参数与FileInputStream同,为File对象或表示path的String,可以看出,当要根据File对象或者String读取一个文件时,用FileReader;我想FileReader子类的作用也就在于这个小分工吧。&3) 一般用法:&<font color="#. InputStreamReader类&&以文本格式输入/输出,可以指定编码格式;&&主要方法:&getEncoding(),read();&&一般用法:&InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));&  while((ch = isr.read())!=-1)&  {&   System.out.print((char)ch);&  }&5. BufferedReader类&&Jdk5 api:&Read text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.&&BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取分行文本很适合,BufferedReader是针对Reader的,不直接针对文件,也不是只针对文件读取。&&一般用法:&BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));&  String data =&  while((data = br.readLine())!=null)&  {&   System.out.println(data);&  }&<font color="#. 总结以上内容,得出比较好的规范用法:&
TA的最新馆藏
喜欢该文的人也喜欢

我要回帖

更多关于 城投债和地方债的区别 的文章

 

随机推荐