java io怎么读取文件并输出到控制台上?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java io怎么读取文件并输出到控制台上?相关的知识,希望对你有一定的参考价值。

有一个txt文件,内容是: hello
现在想通过FileInputStream 输入流读取这个txt里的内容,并把内容输出到控制台上。
请问怎么实现?

import java.io.FileInputStream;
import java.io.IOException;

public class demo
public static void main(String[] args) throws IOException
FileInputStream fis = new FileInputStream("demo1.txt");
byte [] bys =new byte[200];
int len = fis.read();
String string = new String(bys,0,len);
System.out.println(string);
我这样打出来都是乱码,求大神。。。。

直接说问题原因:你只定义byte数组,但没有把文件流放入到数组中,所以打印的string字符串内容是一串空格(看我图1)。

解决方法:int len = fis.read(); read 方法加入参数bys,这样才能把fis的内容注入bys里面。

顺便说下,FileInputStream不能正确输出中文,因为这个是按字节输出的,每个中文站2个字节,会出现乱码。下面给出正确代码截图,和运行截图(图2 、3)

参考技术A 如果有乱码,那可能是转码的问题,你试一下对内容转码一下。
string = new String(string.getBytes("ISO-8859-1"),"UTF-8");
这句话加到输出语句之前,如果不好使就把UTF-8换成GBK,应该就可以了。
参考技术B 用BufferedReader封装,字符占两个字节,你用byte容易出现只读了一半的情况。。。 参考技术C 把bys写到read里。int len = fis.read(bys); 参考技术D 你的程序只读取了文件的前200个字节。但出现乱码的原因更可能是字符编码问题,首先确认一下demo1.txt的编码,然后new String的时候,使用该编码。

以上是关于java io怎么读取文件并输出到控制台上?的主要内容,如果未能解决你的问题,请参考以下文章

IO流(文本文件读取练习)

java中如何实现删除文本文档里面的指定字符

java题 任选一个文件,使用文件输入流,将其数据读取出来,并打印到控制台!! 代码简单能够有注释

黑马基础阶段测试题:通过字符输入流读取info.txt中的所有内容,每次读取一行,将每一行的第一个文字截取出来并打印在控制台上。

Java程序设计---io流读取文件内容并将其逆值输出到控制台

java怎么使用io流读取一个文件夹里面