学习笔记 - FileInputStream读字节文件并打印出来

本文展示了如何使用Java的FileInputStream类来读取文本文件的字节内容,并通过两种方式打印:一是逐字节读取,二是通过字节数组读取。在读取过程中需要注意中文字符可能导致的乱码问题。
摘要由CSDN通过智能技术生成
public class FileInputStreamTest {


<span style="white-space:pre">	</span>public static void main(String[] args) {
<span style="white-space:pre">		</span>// TODO Auto-generated method stub
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span>//FileInputStream读文件测试
<span style="white-space:pre">		</span>new FileInputStreamTest().readByByte("d:\\JAVA之路.txt");
<span style="white-space:pre">		</span>new FileInputStreamTest().readByByteArrays(("d:\\JAVA之路.txt"));
<span style="white-space:pre">		</span>
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public void readByByteArrays(String filePath) {
<span style="white-space:pre">		</span>//由于是读取一个字节数组,只有当出现一个中文字符前面一个字节和后一个字节分开读取时才会出现乱码
<span style="white-space:pre">		</span>File file = new File(filePath);
<span style="white-space:pre">		</span>byte[] buf = new byte[1024];//定义一个字节数组用于接收读取的内容提要
<span style="white-space:pre">		</span>int length = 0;//定义一个变量保存读取的字节数
<span style="white-space:pre">		</span>FileInputStream fis = null;
<span style="white-space:pre">		</span>try {
<span style="white-space:pre">			</span>fis = new FileInputStream(file);
<span style="white-space:pre">			</span>while((length = fis.read(buf)) != -1){
<span style="white-space:pre">				</span>String str = new String(buf,0,length);
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>} catch (FileNotFoundException e) {
<span style="white-space:pre">			</span>// TODO Auto-generated catch block
<span style="white-space:pre">			</span>e.printStackTrace();
<span style="white-space:pre">		</span>} catch (IOException e) {
<span style="white-space:pre">			</span>// TODO Auto-generated catch block
<span style="white-space:pre">			</span>e.printStackTrace();
<span style="white-space:pre">		</span>} finally{
<span style="white-space:pre">			</span>try {
<span style="white-space:pre">				</span>fis.close();
<span style="white-space:pre">			</span>} catch (IOException e) {
<span style="white-space:pre">				</span>// TODO Auto-generated catch block
<span style="white-space:pre">				</span>e.printStackTrace();
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public void readByByte(String filePath){
<span style="white-space:pre">	</span>//由于是读取一个字节,如果是中文的话会出现乱码,解决办法是读取到字节数组中,但也是有可能会出现乱码的。
<span style="white-space:pre">		</span>File file = new File(filePath);
<span style="white-space:pre">		</span>FileInputStream fis = null;
<span style="white-space:pre">		</span>try {
<span style="white-space:pre">			</span>fis = new FileInputStream(file);
<span style="white-space:pre">			</span>/*char c;
<span style="white-space:pre">			</span>while((c = (char)fis.read()) != -1)
<span style="white-space:pre">				</span>System.out.println(c);*/
<span style="white-space:pre">			</span>for(int i = 0; i < file.length(); i++)
<span style="white-space:pre">				</span>System.out.print((char)fis.read());
<span style="white-space:pre">		</span>} catch (FileNotFoundException e) {
<span style="white-space:pre">			</span>// TODO Auto-generated catch block
<span style="white-space:pre">			</span>e.printStackTrace();
<span style="white-space:pre">		</span>} catch (IOException e) {
<span style="white-space:pre">			</span>// TODO Auto-generated catch block
<span style="white-space:pre">					</span>e.printStackTrace();
<span style="white-space:pre">		</span>} finally{
<span style="white-space:pre">			</span>try {
<span style="white-space:pre">				</span>fis.close();
<span style="white-space:pre">			</span>} catch (IOException e) {
<span style="white-space:pre">				</span>// TODO Auto-generated catch block
<span style="white-space:pre">				</span>e.printStackTrace();
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>
}
注意,如果是二进制文件则不要输出字符了肯定会乱码的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值