编程检查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 ...
随机推荐
- java工具包一:日期处理
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7846812.html 邮箱:moyi@moyib ...
- tar.xz文件的解压
xz是绝大数linux默认就带的一个压缩工具. 压缩包xz格式的居然比7z还要小. 不过xz也有一个坏处就是压缩时间比较长,比7z压缩时间还长一些.不过压缩是一次性的,所以可以忽略. xz压缩文件方法 ...
- AJAX 简单归纳 -- 前端知识
什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味 ...
- easyui+webuploader+ckeditor实现插件式多图片上传-添加图片权限(图片上传人是谁,只能看到自己的图片)
需求: 实现过程及思路 1.先页面布局 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=" ...
- Flutter之搜索电影
搜索使用的是豆瓣电影API https://developers.douban.com/wiki/?title=movie_v2#subject 效果 代码: https://github.com/z ...
- 【SPL标准库专题(9)】 Datastructures:SplObjectStorage
PHP SPL SplObjectStorage是用来存储一组对象的,特别是当你需要唯一标识对象的时候. PHP SPL SplObjectStorage类实现了Countable,Iterator, ...
- python的函数(一)
摘要: python的函数(一)主要写函数的基础部分. 1,函数的好处 2,函数的定义与调用 1,函数的好处 函数应该有2个好处: 1,是降低代码的复杂度, 2,是减少代码量,避免重复的写相同的代码. ...
- redis之安装与简单使用
python操作redis: https://www.cnblogs.com/melonjiang/p/5342505.html https://www.jianshu.com/p/2639549be ...
- Distribution setup SQL Server Agent error: "RegCreateKeyEx() returned error 5, 'Access is denied.'" (转载)
In the Configure Distribution Wizard, the step "Configuring SQL Server Agent to start automatic ...
- jbosscache
JBossCache 讲解说明 是什么? 一个树形结构.支持集群.支持事务的缓存技术. 有什么作用? JBoss Cache是针对Java应用的企业级集群解决方案,其目的是通过缓存需要频繁访问的Jav ...