A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 温暖的小白 金牌黑马   /  2013-4-11 09:31  /  2648 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

br = new BufferedReader(new InputStreamReader(new FileInputStream("b.txt")));
然后
br.readLine();这样可以读取一行

但我觉得这样太复杂了,又是BufferedReader、InputStreamReader还有FileInputStream

我只想知道,如何非常简单地读取一行。
不知道FileReader可以不可以。

评分

参与人数 1技术分 +2 收起 理由
黄玉昆 + 2

查看全部评分

15 个回复

正序浏览
本帖最后由 贾振凯 于 2013-4-11 23:52 编辑
王军行 发表于 2013-4-11 12:31
貌似Scanner类有简单的方法,你去看看API的uitl包的Scanner类,我看好多人用这个类,可以扫描流和文件,功 ...


:handshake
Scanner(FileInputStream fis)//不用转换流!
hasNextLong()
nextLine()
该方法返回的内容也不包括结尾处的行分隔符
回复 使用道具 举报
xtfgq 初级黑马 2013-4-11 23:00:21
14#
谢谢楼主,深受启发
回复 使用道具 举报
使用打印流
PrintWriter

你去查看一下jdk中的用法



回复 使用道具 举报
  1. import java.util.*;
  2. import java.io.*;
  3. class Test1
  4. {
  5.         public static void main(String[] args) throws Exception
  6.         {
  7.                 //定义一个文件扫描器
  8.                 Scanner s = new Scanner(new File("f:/java/1.java"));
  9.                 //和遍历集合很像,一行一行遍历
  10.                 while(s.hasNextLine()){
  11.                         String line  = s.nextLine();
  12.                         System.out.println(line);
  13.                 }

  14.         }
  15. }
复制代码
回复 使用道具 举报
FileReader没有readline方法
  1.         public static void main(String[] args) throws IOException
  2.         {
  3.                 //创建一个读取流对象和文件相关联。
  4.                 FileReader fr = new FileReader("buf.txt");

  5.                 //为了提高效率。加入缓冲技术。将字符读取流对象作为参数传递给缓冲对象的构造函数。
  6.                 BufferedReader bufr = new BufferedReader(fr);
  7.                
  8.                 String line = null;

  9.                 while((line=bufr.readLine())!=null)
  10.                 {
  11.                         System.out.print(line);
  12.                 }
  13.                
  14.                 bufr.close();
  15.         }
复制代码
使用javaIO是需要考虑的。

1.      根据数据类型选择相应的流体系。

2.      根据数据类型选择相应的输入输出流对象。

3.      是否需要在字节流和字符流之间转换。

4.      根据需要使用修饰器提高效率或使用方便的功能选择过滤器。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
学习了....
回复 使用道具 举报
貌似Scanner类有简单的方法,你去看看API的uitl包的Scanner类,我看好多人用这个类,可以扫描流和文件,功能横强大
回复 使用道具 举报
Sword 金牌黑马 2013-4-11 12:25:41
7#
  1. package com.itheima;

  2. /**
  3. * 第七题: 编写程序获取已知文件的扩展名.
  4. * 注意: abc.txt的扩展名是txt, abc.java.txt的扩展名也是txt.
  5. *@author Sword
  6. */

  7. import java.io.File;
  8. import java.io.IOException;

  9. public class Test7 {
  10.         public static void main(String args[]) {
  11.                 //创建file对象,读入abc.txt
  12.                 File file = new File("abc.txt");
  13.                 File file1 = new File("abc.java.txt");
  14.                
  15.                 if (!file.exists()) {
  16.                         //try-catch抛出异常
  17.                         try {
  18.                                 file.createNewFile();
  19.                         } catch (IOException e) {
  20.                                 e.printStackTrace();
  21.                         }
  22.                 }
  23.                 //获取file的文件名,赋值给fname
  24.                 String fname = file.getName();
  25.                 String fname1 = file1.getName();
  26.                 //用substring截取文件名,lastIndexOf(".")是从最后一个.开始,长度为length的字符作为后缀名
  27.                 System.out.println(fname + ":扩展名是:"
  28.                                 + fname.substring(fname.lastIndexOf(".") + 1, fname.length()));
  29.                 System.out.println(fname1 + ":扩展名是:"
  30.                                 + fname.substring(fname.lastIndexOf(".") + 1, fname.length()));
  31.         }
  32. }
复制代码
代码和注释已经给出,希望对你有帮助

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 杨杨 于 2013-4-11 12:11 编辑

只要封装到BufferRead 缓冲流中就能安行读了其他都是浮云啊
FileRead内部就是封装的InputStream
  public FileReader(String fileName) throws FileNotFoundException {
super(new FileInputStream(fileName));
    }这是我跟踪的源码
他们的区别就是能否指定编码如
直接用BufferRead 封装FileReader就可以
回复 使用道具 举报
  1. String name = "abc.java.txt";

  2. String extName = name.substring(name.lastIndexOf(".") + 1);//扩展名
  3. System.out.println(extName);
复制代码
这个很简单那
回复 使用道具 举报
本帖最后由 李大伟 于 2013-4-11 12:36 编辑

同意楼上的,首先得确定读取的文本路径,读和写一个道理
这个是照老师讲的 写的
//定义一个FileReader 用来读取F:\\buf.txt 中字符流
FileReader fr = new FileReader("F:\\buf.txt");

//因为要读一行 ,需要调用BufferedReader 中 readLine 方法,并且提高效率,所以 定义 BufferedReader 读取 fr
BufferedReader bufr =new BufferedReader(fr);

//定义一个空的 字符串用来存放 读一行的方法
String line = null;

//初始化计数器
int count =1;
//一行一行的 循环读取
while((line=bufr.readLine())!=null){
                         //循环输出每行的内容   
                         System.out.println("读取到a.txt第"+count+"内容是:"+line);
                          count++;                        
                }

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
楼上是在开玩笑嘛?FileReader没有readLine方法吧
首先要确定你读取的是文本文件,然后这样就可以了
BufferedReader br = new BufferedReader(new FileReader("文件路径"));
String line = null;
while((line = br.readLine()) != null)
{
   System.out.println(line);
}
回复 使用道具 举报
new InputStreamReader();是转换成字节流,若果已经确定只传字符的话就没必要转换了,用FileReader就可以了,不过BufferedReader要高效,他有缓冲区。
所以这种时候就不要省了。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
如果是纯文本文档,就是采用FileReader呀
FileReader fr = new FileReader("b.txt");
fr.readLine();这样就可以了呀
你没有看字符流吗,毕老师有讲呀
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马