精华内容
下载资源
问答
  • 文件中有若干个int的数,你用DataInputStream中的readint()去,何时判读结尾?绝对既不是-1,也不是什么null 同样道理:若文件中有若于个Object对象,你用ObjectInputStream中的readObject()去,...

    ObjectInputStream无论是读对象,还是记取int等java的基本数据类型,在判结束时,绝对既不是-1,也不是什么null。

    若文件中有若干个int的数,你用DataInputStream中的readint()去读,何时判读到结尾?绝对既不是-1,也不是什么null

    同样道理:若文件中有若于个Object对象,你用ObjectInputStream中的readObject()去读,何时判读到结尾?绝对既不是-1,也不是什么null

     

    方法之一:(常用的方法)将若干个对象(数量不定)都装入一个容器中(如:ArrayList之类),然后将容器这一个对象写入就行了。读取时,只要读取一个对象(即容器对象)就行了

    例如:

     1  public ArrayList<Person> readPerson(String pathName){
     2         ArrayList<Person> list = null;
     3         FileInputStream fis;
     4         ObjectInputStream ois;
     5         try {
     6             fis = new FileInputStream(pathName);
     7             ois = new ObjectInputStream(fis);
     8             
     9             list = (ArrayList<Person>) ois.readObject(); 
    10             
    11             System.out.println("加载人员库完成!");
    12             fis.close();
    13             ois.close();
    14         } catch (FileNotFoundException e) {
    15             e.printStackTrace();
    16         } catch (IOException e) {
    17             e.printStackTrace();
    18         } catch (ClassNotFoundException e) {
    19             e.printStackTrace();
    20         }finally{
    21             return list;
    22         }
    23     }

     

    用ArrayList来包裹Person,直接读入一个ArrayList对象。

    方法之二:使用EOFException来判断结束。

     try{
          while(true)
          {
                Object o=ois.radObject();
                //处理已读出的对象o;
           }
     }catch(EOFxception e){
     //已从流中读完。
     }
    finallly{
    流的关闭。
    }

    转载于:https://www.cnblogs.com/mo-xue/p/5778178.html

    展开全文
  • 写入空值作为文件结尾标志, 读到null终止三. 处理 EOFException 时继续编码 一. 以集合为对象读写文件 ( 最优解 ) static ObjectOutputStream oos = null; public static void ObjectOutputStreamTest ( ) { ...

    一. 以集合为对象读写文件 ( 最优解 )

    static ObjectOutputStream oos = null;
    
    public static void ObjectOutputStreamTest ( ) {
    
        ArrayList<Person> person = new ArrayList<Person>(
            Arrays.asList( new Person[] {
                new Person( "001", "hhh", 12 ),
                new Person( "003", "iii", 18 ),
                new Person( "002", "aaa", 13 )
            } )
        );
        
        try {
            oos = new ObjectOutputStream( new FileOutputStream( "D:\\person_date.txt" ) );
            oos.writeObject( person );
            oos.flush();
        } catch ( Exception e ) {
            e.printStackTrace( );
        }
    }
    
    static ObjectInputStream ois = null;
    
    public static void ObjectInputStreamTest ( ) {
    
        ArrayList<Person> person = new ArrayList<Person>( );
    
        try {
            ois = new ObjectInputStream( new FileInputStream( "D:\\person_date.txt" ) );
            person = (ArrayList<Person>)ois.readObject();
    
        } catch ( Exception e ) {
            e.printStackTrace( );
        }
    
        for ( Person p : person ) {
            System.out.println(
                    "no :" + p.getNo() +"\n"+
                    "name: " + p.getName() +"\n"+
                    "age: " +p.getAge() +"\n" );
        }
    }
    

    二. 写入空值作为文件结尾标志, 读到null终止

    如果写文件的时候忘记空值, 读文件会麻烦

            ArrayList<Person> person = new ArrayList<Person>( );
    
            try {
                ois = new ObjectInputStream( new FileInputStream( "D:\\person_date.txt" ) );
    
                Object obj = null;
                while ( (obj=ois.readObject()) != null ) {
                    person.add( (Person)obj );
                }
    
                for ( Person p : person ) {
                    System.out.println(
                            "no :" + p.getNo() +"\n"+
                            "name: " + p.getName() +"\n"+
                            "age: " +p.getAge() +"\n" );
                }
    
            } catch ( Exception e ) {
                e.printStackTrace( );
            }
    
            Person[] person = new Person[] {
                    new Person( "001", "hhh", 12 ),
                    new Person( "003", "iii", 18 ),
                    new Person( "002", "aaa", 13 ),
                    null
            };
    
            try {
                oos = new ObjectOutputStream( new FileOutputStream( "D:\\person_date.txt" ) );
                for ( Person p : person ) {
                    oos.writeObject( p );
                }
                oos.flush();
            } catch ( Exception e ) {
                e.printStackTrace( );
            }
    

    三. 处理 EOFException 时继续编码

            Person[] person = new Person[] {
                new Person( "001", "hhh", 12 ),
                new Person( "003", "iii", 18 ),
                new Person( "002", "aaa", 13 ),
            };
    
            try {
                oos = new ObjectOutputStream( new FileOutputStream( "D:\\person_date.txt" ) );
                for ( Person p : person ) {
                    oos.writeObject( p );
                }
                oos.flush();
            } catch ( Exception e ) {
                e.printStackTrace( );
            } catch ( EOFException e ) {
                // 这里继续写读到文件结尾的之后的操作
            }
    
    展开全文
  • java中关于判断文本文件读到文件

    万次阅读 2017-02-16 11:38:07
    使用Scanner类判断Scanner类中有不少可以查看文件是否结束的方法,比如下面的代码使用的是hasNextLine方法package com.li;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util...

    使用Scanner类判断

    Scanner类中有不少可以查看文件是否结束的方法,比如下面的代码使用的是hasNextLine方法

    package com.li;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.util.*;
    
    public class Main {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            Scanner inputStream = null;
            try 
            {
                inputStream = new Scanner(new FileInputStream("stuff.txt"));
            }catch(FileNotFoundException e)
            {
                System.out.println("File stuff.txt was no found");
                System.exit(0);
            }
            String line = null;
            while(inputStream.hasNextLine())
            {
                line = inputStream.nextLine();
                System.out.println(line);
            }
            inputStream.close();
        }
    }

    使用hasNextLine方法在读到结尾的时候会返回一个false值,从而可以判读文件读完了(注意有一个NextLine方法在读到\n会自动将其抛弃),针对不同的数据类型,Scanner还为我们提供了hasNextInt,jasNextLong,hasNextShort……等等一些方法,它们的使用方法都是大同小异的。

    使用BufferedReader类来判断

    使用BufferedReader类中的read和readLine方法来判断即可,对于read方法,当返回-1的时候就可以知道读完了,对于readLine方法,当返回null的时候就知道读完了。

    展开全文
  • 关于反序列,因为对象已经是一个字节序列所以,不能用.read()方法判断 同时使用  string s =(String)in.readObject()方法 虽然能够读取文件 但是会抛出EOFException 异常 可以利用这一点 详情见代码 ...

    对象序列化和反序列化 必须实现Serializable 接口 


    关于反序列,因为对象已经是一个字节序列所以,不能用.read()方法判断 同时使用

     string s =(String)in.readObject()方法 虽然能够读取文件 但是会抛出EOFException 异常 可以利用这一点

    详情见代码


    package Number_1802;
    
    import java.io.*;
    
    /**
     * 对象序列化和反序列化 必须实现Serializable 接口 关于反序列,因为对象已经是一个字节序列所以,不能用.read()方法判断 同时使用
     * string s =in.readObject()方法 虽然能够读取文件 但是会抛出EOFException 异常 可以利用这一点
     * 
     * 
     * @author he
     * 
     */
    public class P573 implements Serializable {
    	static String filename = "F:/workspace/Java Thinking002/src/Number_1802/P573.java";
    	static String filename2 = "F:/IOtest/b/Serializable.txt";
    
    	public static void main(String[] args) throws IOException, IOException,
    			ClassNotFoundException {
    		// 对象序列化
    		ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(
    				filename2));
    		BufferedReader in = new BufferedReader(new FileReader(filename));
    		String s;
    		while ((s = in.readLine()) != null) {
    			// 通过writeObject() 实现序列化,打开文件很乱
    			out.writeObject(s);
    		}
    		// 反序列化
    		ObjectInputStream in2 = new ObjectInputStream(new FileInputStream(
    				filename2));
    
    		System.out.println("因为是字节序列,所以用.read()方法永远是-1:" + in2.read());
    
    		// 使用此方法虽然能读出文件但会抛出EOFException异常,因此利用这一点用第二种方法输出
    		// String s2;
    		// while((s2=(String)in2.readObject())!=null){
    		// System.out.println(s2);
    		// }
    
    		while (true) {
    			try {
    				System.out.println(in2.readObject());
    				// 当抛出EOFException时 则表明已经读到文件末尾
    			} catch (EOFException e) {
    				break;
    			}
    		}
    	}
    }
    


    展开全文
  • 我在客户端流,我无法读到-1,所以无法判断流的末尾。 有没有人指点我下,如何才能判断出流的末尾?(服务端我无法控制,我只能控制客户端) 网络流中判断末尾的解决办法: 1、先发送一个指定长度的头,头中指明...
  • Java利用RandomAccessFile读取文本文件末尾指定行数的文本。
  • java判断文件是否为图片

    千次阅读 2017-05-31 15:16:45
     * 判断文件是否为图片   *   * @param pInput 文件名   * @param pImgeFlag 判断具体文件类型   * @return 检查后的结果   * @throws Exception   */  public static boolean ...
  • java三种方法追加内容到文件末尾

    千次阅读 2017-02-08 14:48:59
    package org.outman.dms.server; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.Out
  • 转自http://nancyjhsueh.blog.hexun.com/30731901_d.html 1, import java.io.*; BufferedReader br = new BufferedReader(new FileReader("tt.txt")); String content = ""; ...
  • 上一篇写了Java写入文件操作,这一篇回顾一下Java读文件操作。 Java IO采用reader类来进行文件读取,而且已经提供了三个Reader的实现类,FileReader,InputStreamReader和BufferedReader。其中InputStreamReader可以...
  • [2013/4/11]发现了一个问题,如果仅仅通过判断BufferedReader的readline方法返回的是否为null,来间接判断文件读取是否到达末尾不太准确,原因是,如果在文件的末尾多打了两个回车以上(包括两个),那么程序就会...
  • Socket传输文件。一般采用文件流的方式。无论要传输的文件什么样的类型,它都是文件,我们都可以将它看成是文本文件。尽管用记事本打开后它有可能乱码。这一种意识很重要,因为这能有效地降低搭建程序的难度,简化...
  • java 读文件时,readline的问题

    千次阅读 2014-09-05 16:07:34
    文件的是以每行为一条记录: 读取的文件时366个文件,...在读取文件时候,readLine()的用法很重要,如果一个文件中有好多的记录,在while循环的末尾, 也得有readline()来读取下一条文件
  • java实现socket信息传输后,在进一步实现文件传输的时候经常会发生文件传了出去,但接收方收不,即生成的文件大小为0字节。这是因为接收的时候没有做好判断导致的。 主要判断模块如下所示: while ((length = s...
  • 根据网上搜索加亲身试验 (1)可行 手动在最后写入了一个结束标志 null, out.writeObject(null); 读出的判定条件是 in.readObject()!=null ...使用try-catch 块捕捉,实现你想要的操作 ...Syst
  • 怎么判断对象流已经读取到末尾

    千次阅读 2018-06-15 09:36:48
    对于有用过对象流的人来说,都很清楚,对象流操作的是对象,存入一个一个的对象,也只能一个一个的对象,但是存在一个问题就是写入多少个就只能多少个,没有读取结尾的判断方法,如果读取超过了则会抛出异常java.io....
  • 使用getline()txt文件的时候,不注意会出现点小bug。 贴代码: #include<iostream> #include<string.h> #include<fstream> #include<sstream> using namespace std; int main() ...
  • Java实现文件拆分合并

    2019-04-09 11:26:00
    拆分第一个文件时,根据平均字节数往后取给定的大约行字节数的字节,然后循环字节判断是否为\r或者\n,如果字节为\r或者\n则代表到达行末尾,记录行尾字节位置。知道了开头字节位置与结束字节位置,就可以将此位置...
  • java读取文件

    千次阅读 2013-03-14 16:46:22
     文件(File)是 最常见的数据源之一,在程序中经常需要将数据存储到文件中,例如图片文件、声音文件等数据文件,也经常需要根据需要从指定的文件中进行数据的读取。当然, 在实际使用时,文件都包含一个的格式,这...
  • 导读 ...在我们读文件之前,首先要知道数据起始位置(offset)和长度(length),这样才能使用 RandomAccessFile 的 seek方法移动数据起始位置,然后将数据出来。 基本过程就是这样的,很简...
  • 于是在while循环中增加了输出每个循环读取内容控制台,发现在读取请求正文末尾时,while循环未跳出,也不继续执行循环体,如果此时关闭网页则可以结束循环,问题可能比较基础,还望大神们能够帮忙解惑,谢谢!...
  • JAVA文件操作

    千次阅读 2014-07-26 08:16:20
    11.3 I/O类使用  由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择。... 文件(File)是 最常见的数据源之一,在程序中经常需要将数据存储
  • BufferedReader br = new BufferedReader(new InputStreamReader(is)); String msg = null; while((msg = br.readLine()).length() > 0) { sb.append(msg);...
  • Java关于文件上传的一个例子

    千次阅读 2012-06-07 13:01:56
    文件上传不能用get方式提交,因为他提交的数据量最多只有1kb, IE浏览器默认情况下把file对象当做普通的文本框。并没有当做文件上传来处理。 普通文的表单name =value的形式提交数据。 文件上传除了有name =...
  • Java 文件操作

    万次阅读 2015-06-06 15:38:39
    11.3 I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从...11.3.1 文件操作 文件(File)是 最常见的数据源之一,在程序中经常需要将数据存储到文件中,例如图片文件、声音文件等数据文件
  • java读取文件 每行首字丢失问题

    千次阅读 2016-06-07 21:36:05
    java读取文件 每行首字丢失问题 Posted on 2011-12-15 20:05 bingfeng 阅读(736) 评论(0) 编辑 收藏 在读取文件的时候需要判断是否结尾,因此在while循环条件中有几种判断条件。 1.br.read()返回...
  • Java文件读写操作: 操作步骤: 1,创建源 2,选择流 3,操作 4,释放资源 1、创建源 File src=new File(“abc.txt”);//输入流的源 File dest=new File(“luhan1.txt”);//输出流的源 2、选择流 InputStream is...
  • 必做需求:①左侧以树形结构列出本机文件系统,根为“我的电脑”;②点击左侧结点,右侧 以表格展示其下文件/文件夹,包含文件名、大小、修改日期、文件类型等列;③单击右侧表头可按该列升降排序;④右侧文件/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,464
精华内容 16,585
关键字:

java判断文件读到末尾

java 订阅