Java输入数据流详解

Java输入数据流

创新互联建站是一家以成都网站建设、网页设计、品牌设计、软件运维、成都网站营销、小程序App开发等移动开发为一体互联网公司。已累计为垃圾桶等众行业中小客户提供优质的互联网建站和软件开发服务。

在Java中,我们把能够读取一个字节序列的对象称作一个Java输入数据流;而我们把够写一个字节序列称作一个输出流。它们分别由抽象类 InputStream和OutputStream类表示。因为面向字节的流不方便用来处理存储为Unicode(每个字符使用两个字节)的信息。所以Java 引入了用来处理Unicode字符的类层次,这些类派生自抽象类Reader和Writer,它们用于读写双字节的Unicode字符,而不是单字节字符。

Java.io包简介

JDK标准帮助文档是这样解释Java.io包的,通过数据流、序列和文件系统为系统提供输入输出。

InputStream类和OutputStream类

InputStream类是所有输入数据流的父类,它是一个抽象类,定义了所有Java输入数据流都具有的共通特性。
java.io.InputStream的方法如下:

 
 
 
  1. public abstract read()throws IOException

 读取一个字节并返回该字节,如果到输入源的末则返回-1。一个具体的Java输入数据流需要重载此方法,以提供 有用的功能。例如:在FileInputStream类中,该方法从一个文件读取一个字节。

 
 
 
  1. public int read(byte[] b)throws IOException 

把数据读入到一个字节数据中,并返回实际读取的字节数目。如果遇到流末 则返回-1,该方法最多读取b.length个字节。

 
 
 
  1. public abstract int read(byte[] b,int off,int len)throws IOException 

把数据读入到一个字节数组中并返回实际读取的字节数目。如果遇到流的末尾则的返回-1。 其中参数off表示第一个字节在b中的位置,len表示读取的最大字节数。

 
 
 
  1. public long skip(long n)throws IOException 

略过N个字节不读取,会返回实际略过的字节数目。因为数据流中剩下的数据可能不到N 个字节那么多,所以此时返回值会小于N。

 
 
 
  1. public int available()throws IOException 

read方法(包括后面要讲的OutputStream类的Write方法)都能够阴塞一个线程,直到字节被 实际读取或写入。这意味着如果一个流不能立即被读或被写

 
 
 
  1. /* 
  2. * Created on 2005-3-10 
  3. * To change the template for this generated file go to 
  4. * Window>Preferences>Java>Code Generation>Code and Comments 
  5. */ 
  6. package mytestfiles; 
  7. import java.io.BufferedReader; 
  8. import java.io.File; 
  9. import java.io.FileReader; 
  10. import java.io.FileWriter; 
  11. import java.io.IOException; 
  12. import java.io.PrintWriter; 
  13. /** 
  14. * @author zhangqinglin 
  15. * To change the template for this generated type comment go to 
  16. * Window>Preferences>Java>Code Generation>Code and Comments 
  17. */ 
  18. public class Files 
  19. public static void main(String[] args) throws IOException 
  20. Files f = new Files(); 
  21. // System.out.println(f.readFile("f:\\LinkFile.java")); 
  22. // f.readAllFile("f:\\","LinkFile.java"); 
  23. // f.readLineFile("f:\\","LinkFile.java"); 
  24. // System.out.println(f.fileIsNull("f:\\","122.txt")); 
  25. // f.readFolderByFile("F:\\PDF"); 
  26. // System.out.println(f.createAndDeleteFolder("ss","f:\\")); 
  27. // System.out.println(f.createAndDeleteFile("f:\\ss\\","TestFile.dat")); 
  28. String[] ss = new String[50]; 
  29. for(int i=0;i{ 
  30. ss[i] = "信息技术和互联网(计算机软硬件,通讯) "+i; 
  31. f.writeFile("f:\\ss\\","TestFile.txt",ss); 
  32. /** 
  33. * 文件的写入 
  34. * @param filePath(文件路径) 
  35. * @param fileName(文件名) 
  36. * @param args[] 
  37. * @throws IOException 
  38. */ 
  39. public void writeFile(String filePath,String fileName,String[] args) throws IOException 
  40. FileWriter fw = new FileWriter(filePath+fileName); 
  41. PrintWriter out=new PrintWriter(fw); 
  42. for(int i=0;i{ 
  43. out.write(args[i]); 
  44. out.println(); 
  45. out.flush(); 
  46. fw.close(); 
  47. out.close(); 
  48. /** 
  49. * 文件的写入 
  50. * @param filePath(文件路径) 
  51. * @param fileName(文件名) 
  52. * @param args 
  53. * @throws IOException 
  54. */ 
  55. public void writeFile(String filePath,String fileName,String args) throws IOException 
  56. FileWriter fw = new FileWriter(filePath+fileName); 
  57. fw.write(args); 
  58. fw.close(); 
  59. /** 
  60. * 创建与删除文件 
  61. * @param filePath 
  62. * @param fileName 
  63. * @return 创建成功返回true 
  64. * @throws IOException 
  65. */ 
  66. public boolean createAndDeleteFile(String filePath,String fileName) throws IOException 
  67. boolean result = false; 
  68. File file = new File(filePath,fileName); 
  69. if(file.exists()) 
  70. file.delete(); 
  71. result = true; 
  72. System.out.println("文件已经删除!"); 
  73. else 
  74. file.createNewFile(); 
  75. result = true; 
  76. System.out.println("文件已经创建!"); 
  77. return result; 
  78. /** 
  79. * 创建和删除目录 
  80. * @param folderName 
  81. * @param filePath 
  82. * @return 删除成功返回true 
  83. */ 
  84. public boolean createAndDeleteFolder(String folderName,String filePath) 
  85. boolean result = false; 
  86. try 
  87. File file = new File(filePath+folderName); 
  88. if(file.exists()) 
  89. file.delete(); 
  90. System.out.println("目录已经存在,已删除!"); 
  91. result = true; 
  92. else 
  93. file.mkdir(); 
  94. System.out.println("目录不存在,已经建立!"); 
  95. result = true; 
  96. catch(Exception ex) 
  97. result = false; 
  98. System.out.println("CreateAndDeleteFolder is error:"+ex); 
  99. return result; 
  100. /** 
  101. * 输出目录中的所有文件及目录名字 
  102. * @param filePath 
  103. */ 
  104. public void readFolderByFile(String filePath) 
  105. File file = new File(filePath); 
  106. File[] tempFile = file.listFiles(); 
  107. for(int i = 0;i{ 
  108. if(tempFile[i].isFile()) 
  109. System.out.println("File : "+tempFile[i].getName()); 
  110. if(tempFile[i].isDirectory()) 
  111. System.out.println("Directory : "+tempFile[i].getName()); 
  112. /** 
  113. * 检查文件中是否为一个空 
  114. * @param filePath 
  115. * @param fileName 
  116. * @return 为空返回true 
  117. * @throws IOException 
  118. */ 
  119. public boolean fileIsNull(String filePath,String fileName) throws IOException 
  120. boolean result = false; 
  121. FileReader fr = new FileReader(filePath+fileName); 
  122. if(fr.read() == -1) 
  123. result = true; 
  124. System.out.println(fileName+" 文件中没有数据!"); 
  125. else 
  126. System.out.println(fileName+" 文件中有数据!"); 
  127. fr.close(); 
  128. return result; 
  129. /** 
  130. * 读取文件中的所有内容 
  131. * @param filePath 
  132. * @param fileName 
  133. * @throws IOException 
  134. */ 
  135. public void readAllFile(String filePath,String fileName) throws IOException 
  136. FileReader fr = new FileReader(filePath+fileName); 
  137. int count = fr.read(); 
  138. while(count != -1) 
  139. System.out.print((char)count); 
  140. count = fr.read(); 
  141. if(count == 13) 
  142. fr.skip(1); 
  143. fr.close(); 
  144. /** 
  145. * 一行一行的读取文件中的数据 
  146. * @param filePath 
  147. * @param fileName 
  148. * @throws IOException 
  149. */ 
  150. public void readLineFile(String filePath,String fileName) throws IOException 
  151. FileReader fr = new FileReader(filePath+fileName); 
  152. BufferedReader br = new BufferedReader(fr); 
  153. String line = br.readLine(); 
  154. while(line != null) 
  155. System.out.println(line); 
  156. line = br.readLine(); 
  157. br.close(); 
  158. fr.close(); 
  159. }

到这里Java输入数据流就介绍完了

本文题目:Java输入数据流详解
文章URL:http://www.shufengxianlan.com/qtweb/news20/548470.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联