编程检查d:\test.txt文件是否存在,若在则显示该文件的名称和内容。
下面放两种方法
老师写的:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException; //1、编程检查d:\test.txt文件是否存在,若在则显示该文件的名称和内容。
//老师写的,可以读取汉字 public class SY61 {
public static void main(String[] args) throws Exception {
File f= new File("d:\\test.txt");
if(f.exists()){
System.out.println("文件存在 " + f.getAbsolutePath() );//显示文件路径
FileInputStream fis = new FileInputStream(f);
byte[] b = new byte[1024];//以字节数组存放
int len = 0;
while(( len = fis.read(b)) != -1 ){
System.out.println(new String(b,0,len));
}
fis.close(); }
else
{
System.out.println("文件不存在");
}
} }
这种可以读取汉字.下面是我自己写的,不能读取汉字,原本该是汉字的地方是问号.
/*编程检查C:\WINDOWS\setuplog.txt文件是否存在,
* 若在则显示该文件的名称和内容。*/
//自己写的,读取不了汉字
import java.io.File;
import java.io.FileInputStream; public class Test6_1 {
public static void main(String[] args) throws Exception{
FileInputStream fin=null;
int c=0;
File f=new File("d:\\test4.txt");
if(f.exists()){
System.out.println("文件存在");
fin=new FileInputStream(f);
c=fin.read();
while(c!=-1){
System.out.print((char)c);
c=fin.read();
}
System.out.println();
System.out.println("File name:"+f.getName());
}
else
System.out.println("文件不存在");
fin.close();
}
}
那么问题来了,FileInputStream的read(byte[])和read()方法有什么异同??
read(byte[])返回的是一个整型的数,当到文件的尾时候返回-1,也就是说read一次读取的字节数为字节数组的长度。
read()方法一次读取一个字节并返回 那返回类型不应该是byte吗 为什么是int呢??
从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。
此处粘贴一位大神的回答:
如果因为已经到达流末尾而没有可用的字节,则返回值 -1。我们需要使用一个不可能在数据中出现的值来表示流末尾, Java中就是用-1来表示这个末尾的, 因为-1不会在数据中出现,如果返回byte, 同样无法表示流末尾., byte的取值范围是从-128到127,这个范围内所有的数据, 都有可能在数据中出现,read()方法需要返回一个特殊的值来表示流末尾, 这个值不能和流中的数据重复,read()方法内部将读取到的所有字节高位补0转为int返回, 这样做所有的数据都会是正数,这时就可以用-1表示流末尾了,而改变后的数据只要强转回byte, 就可以得到原有数据。也就是说把一个字节的数据和java中的byte类型的数据混淆了。
编程检查d:\test.txt文件是否存在,若在则显示该文件的名称和内容。的更多相关文章
- 关于解决 http 状态码200,php 文件有输出,但是不显示模板文件的问题
一 问题 给公司搭建一个在线测试站点之后,在浏览器地址栏输入 "http://xxx.xxx.xxx/index.php",页面什么都没显示.调出浏览器的开发者工具查看,http ...
- Mac下如何显示隐藏文件/文件夹_百度经验
在应用程序里打开终端, cd 你的文件夹名 ls -a 即可显示该文件夹下的所有隐藏文件 如果你想打开整个系统的隐藏文件可以在终端下输入以下命令: defaults write com.apple ...
- VS 2010不显示头文件源文件和所有以前分类的文件夹,*.h 和*.cpp都显示在同一个文件
打开VS后不显示头文件源文件和所有以前分类的文件夹,*.h 和*.cpp都显示在同一个文件 点击右图红色指示显示所有文件夹按钮,就能恢复.
- Linux:file命令显示自定义文件类型
file 命令可以查看文件类型信息,原理见: 非常Linux-file命令与magic file 修改 /ect/magic 文件后,可用 file 命令显示自定义文件类型信息. man magic ...
- centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课
centos shell编程4[分发系统] 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要 ...
- 【Python】[IO编程]文件读写,StringIO和BytesIO,操作文件和目录,序列化
IO在计算机中指Input/Output,也就是输入和输出. 1.文件读写,1,读文件[使用Python内置函数,open,传入文件名标示符] >>> f = open('/User ...
- 写文件的工具类,输出有格式的文件(txt、json/csv)
import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io. ...
- Linux编程 4 (创建文件touch,复制文件cp,tab补全,链接文件ln)
一.创建文件 使用touch 可以创建空文件,例如opt目录下创建test2.txt文件.这种一般是有些程序必须要先创建文件,才能使用. 二. 复制文件 2.1 使用cp命令来复制文件,需要两个参数- ...
- Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器
一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件处理: if 条件成立: val = 1 else: val = 2 改成三元运算 val = 1 if 条件成立 else ...
随机推荐
- mybaits模糊查询使用<bind>标签
<select id="selectBlogsLike" resultType="Blog"> <bind name="patter ...
- Code Signal_练习题_variableName
Correct variable names consist only of English letters, digits and underscores and they can't start ...
- 本地服务器搭建服务:svn
SVN(使用VisualSVN-server)可视化SVN 服务搭建,适合小白:简单又快捷,深入了解命令行方式等高手请移步官网看教程 1.官网 :http://subversion.apache.or ...
- 分布式配置中心 携程(apollo)
1.传统配置文件与分布式配置文件区别 传统配置文件:如果修改了配置文件,需要重新打包发布,重新发布服务,而且每个环境的变更配置文件,比较繁琐. 分布式配置文件:将配置文件注册到配置中心上去,可以使用分 ...
- 清除input numer 点击样式
input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearance: none; }
- PHP学习目标
课程阶段学习目标 阶段一: 目标:能够使用DIV+CSS布局出任意的网页页面 说明:根据PSD图设计,使用DIV+CSS布局符合WEB标准.多浏览器兼容的网页,能建立网站制作所需要的模板 阶段二: 目 ...
- 2018-10-17 22:20:39 c language
2018-10-17 22:20:39 c language C语言中的空白符 空格.制表符.换行符等统称为空白符,它们只用来占位,并没有实际的内容,也显示不出具体的字符. 制表符分为水平制表符和垂 ...
- C# 获得目录下所有文件或指定文件类型文件(包含所有子文件夹)
public partial class FileGet { /// <summary> /// 私有变量 /// </summary> private static List ...
- org.postgresql.util.PSQLException: 栏位索引超过许可范围:3,栏位数:2。
org.postgresql.util.PSQLException: 栏位索引超过许可范围:3,栏位数:2. 今天在写完SQL进行查询的时候,后台一直报错显示上面的信息.看错误完全不知道原因,就重新检 ...
- textbox只允许输入数字
private void txtUserId_KeyPress(object sender, KeyPressEventArgs e) { //如果输入的不是数字键,也不是回车键.Backspace键 ...