怎么吧File I/O改为Standard I/O? linux的作业不太明白

发布网友 发布时间:2022-04-23 23:14

我来回答

2个回答

懂视网 时间:2022-05-21 20:30

如何解决fileinputstream中文乱码问题?一起了解一下吧!

Java中使用 FileInputStream 读取txt等文档时,中文会产生乱码,这是因为一个中文对应两个字节存储(负数),也就是说,读取对应中文的字节数应该是偶数; 而英文对应一个字节存储。FileInputStream每次读取一个数组长度的字节时,读取的中文字节数可能是奇数,也就是只读到中文的一半字节,出现乱码。

解决方法是:

try {

            fis = new FileInputStream(file);

            InputStreamReader reader = new InputStreamReader(fis,"GBK"); //最后的"GBK"根据文件属性而定,如果不行,改成"UTF-8"试试 BufferedReader br = new BufferedReader(reader); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); reader.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } }

关于解决fileinputstream中文乱码问题,我们就了解到这啦!


热心网友 时间:2022-05-21 17:38

Standard I/O方式即指采用标准输入输出,也就是从终端输入输出。
在Linux下,标准输入对应名为“/dev/stdin”的设备文件,标准输出对应名为“/dev/stdout”的设备文件。
采用Standard I/O方式,将char inFilename[]="input.dat";改为char inFilename[]="/dev/stdin";即可。
此时需要管道符来完成文件复制(假设程序名为mycp):cat input.dat | ./mycp
---
如果输出也要用Standard I/O方式,那么继续将char outFilename[]="output.dat";改为char outFilename[]="/dev/stdout";
这时执行文件复制的命令为(假设程序名为mycp):cat input.dat | ./mycp > output.dat
这种情况下,还需要改造程序将提示信息输出到/std/stderr,以便分离文档数据。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com