精华内容
下载资源
问答
  • JAVA操作将内容追加写入文件方法一:public static boolean updateFile(String str){str = "test";boolean blg = false;try {RandomAccessFile rf = new RandomAccessFile("C:\\data.txt","rw");//定义一个类...

    JAVA操作将内容追加写入文件

    方法一:

    public static boolean updateFile(String str)

    {

    str = "test";

    boolean blg = false;

    try {

    RandomAccessFile rf = new RandomAccessFile("C:\\data.txt","rw");

    //定义一个类RandomAccessFile的对象,并实例化

    rf.seek(rf.length());//将指针移动到文件末尾

    rf.writeBytes("测试内容");

    rf.close();//关闭文件流

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    return blg ;

    }

    方法二:

    public void writeDealInfo(String str_log)

    {

    FileWriter fw = null;

    try

    {

    fw = new FileWriter( "D:\\system.log",true); // 第二个参数 true 表示写入方式是追加方式

    fw.write(new Date() + " : " + str_log + "\r\n");

    }

    catch (Exception e)

    {

    System.out.println("书写日志发生错误:" + e.toString());

    }

    finally

    {

    try

    {

    fw.close();

    }

    catch (IOException e)

    {

    // TODO 自动生成 catch 块

    e.printStackTrace();

    }

    }

    }

    分享到:

    18e900b8666ce6f233d25ec02f95ee59.png

    72dd548719f0ace4d5f9bca64e1d7715.png

    2010-10-17 20:28

    浏览 2136

    评论

    发表评论

    文章已被作者锁定,不允许评论。

    展开全文
  • Java面向对象程序设计输入/输出流与文件处理深圳职业技术学院软件技术专业 内容提要 1 输入输出流基本概念 2 输入输出节点流 3 输入输出过滤流 4 文件的随机读写 ......Java类库中,将信息写入内存的类是 A.java.io....

    Java面向对象程序设计输入/输出流与文件处理深圳职业技术学院软件技术专业 内容提要 1 输入输出流基本概念 2 输入输出节点流 3 输入输出过滤流 4 文件的随机读写 ......

    Java类库中,将信息写入内存的类是 A.java.io.FileOutputstreamB.java.io.ByteArrayOutputStreamC.java.io.BufferedOutputstreamD.java.io.DalaOutputStream......

    下面程序的功能是将一个整数数组写入二进制文件。在下画线处应填入的选项是 import java.io.*; public class XieShuzu public static void main(String[] A.......

    使用java输入输出流实现文件的复制_计算机软件及应用_IT/计算机_专业资料。使用java输入输出流实现文件的复制,代码部分 使用java 输入输出流实现文件的复制: public ......

    Java高级编程(文件输入与输出)_院校资料_高等教育_教育专区。java文件输入与输出流、文件及其输入输出主讲教师:谢凤静 主讲教师: 牡丹江大学信电系版权所有 牡丹江大学......

    // } System.out.println("目录分隔符:"+ File.separator); } package cn.itcast.file; import java.io.File; /* 路径问题: 绝对路径: 该文件在硬盘上 ......

    一个非常好用的java读写INI配置文件_IT/计算机_专业资料。一个非常好用的java读写INI配置文件 1. package mytools; 2. 3. import java.io.BufferedReader; 4......

    【参考程序】 import java.io.*; public class CopyFile { public static void main(String args[]) { if ( args.length<2) { System.out.println("usage......

    (想要实现连续追加, 再追加, 需要重写writeObject(Object obj) 把追加标识的部分删掉) import import import import import import import import java.io.File; ......

    java项目/jsp项目: 注意:如果放在网站中, class文件所在文件夹不能被打开或下载。 access:mdb 如何访问: 文件放在class文件所在的路径下面。 加深: 用......

    欢迎使用 ? Java io 流、文件及其输入输出 主讲教师:谢凤静 牡丹江大学信电系版权所有 一、流和文件(一)流与java.io包 1 流 流的含义:计算机系统使用的所有......

    write read 输出文件 输入文件 14 文件操作实例简单程序! import java.io.*; public class Copy { public static void main(String[] args) throws IOException ......

    java文件读写操作_IT/计算机_专业资料。1、按字节读取文件内容 2、按字符...

    Java开发写规范文档_计算机软件及应用_IT/计算机_专业资料。JAVA 源程序文件结构表示方法: (1) (2) (3) 原则上 1 行最大为 80 或 90 个文字。 缩格 4 ......

    importjava.io.*; publicclassXieShuzu pub...

    形式写入字符 BufferedWriter-- 处理流,写入字符 FileOutputStream 用于写入诸如图像数据之类的原始字节的流 FileWriter //向 D:\\\\学习\\\\java\\\\1.txt 文件写入......

    import java.io.*: public class WriteFile public static void main(String[] A. int[] myArray=10,20,30,40; try FileOutputStream f=new FileOutputStr......

    Java文件读写操作代码实现_计算机软件及应用_IT/计算机_专业资料。一、Bu...

    使用Java语言实现任意文件的复制_电脑基础知识_IT/计算机_专业资料。使用 Java 语言实现任意文件的复制首先,请做好准备工作:一份>=10MB 的任意格式的文件(如 MP4......

    java 文件读写操作大全 一.获得控制台用户输入的信息 public Stri...

    展开全文
  • 在使用java来存储对象是很简单的,但是需要追加对象时为了方便在能使用ObjectInputStream读取所有对象时(包括追加的对象),就需要要做些特别的处理。首先能追加数据,那么在构造FileOutPutStream时注意。Filefile, ...

    在使用java来存储对象是很简单的,但是需要追加对象时为了方便在能使用ObjectInputStream读取所有对象时(包括追加的对象),就需要要做些特别的处理。

    首先能追加数据,那么在构造FileOutPutStream时注意。

    File file, boolean append) 创建一个向指定File对象表示的文件中写入数据的文件输出流

    创建一个向指定File对象表示的文件中写入数据的文件输出流。如果第二个参数为true,则将字节写入文件末尾处,而不是写入文件开始处。创建一个新FileDescriptor对象来表示此文件连接。

    其次为了能保证追加的对象被读取到,那么需要自己去新建一个对象输出流,并继承ObjectInputStream,并重写

    protected void writeStreamHeader()

    throws IOException

    提供 writeStreamHeader 方法,这样子类可以将其自身的头部添加或预加到流中。它可以将幻数 (magic number) 和版本写入流。

    如下代码网上参考的:

    class ObjectOutputStreamForAddObject extendsObjectOutputStream {

    private static File f;

    writeStreamHeader()方法是在ObjectOutputStream的构造方法里调用的由于覆盖后的writeStreamHeader()方法用到了f。如果直接用构造方法创建一个MyObjectOutputStream对象,那么writeStreamHeader()中的f是空指针因为f还没有初始化。所以这里采用单态模式(将构造方法定义为私有的,然后通过方法获取对象,可以保证某个类只能存在一个对象示例)

    public static ObjectOutputStreamForAddObject newInstance(File file,OutputStream out)

    throws IOException {

    f = file;

    return new ObjectOutputStreamForAddObject(out);

    }

    private ObjectOutputStreamForAddObject(OutputStream out) throws IOException{

    super(out);

    }

    @Override

    protected void writeStreamHeader() throws IOException {

    if (!f.exists() || (f.exists() &&f.length() == 0)) {

    super.writeStreamHeader();

    } else {

    super.reset();

    }

    }

    }最后 在将对象写入文件的时候是调用ObjectOutputStreamForAddObject类,记得调用flush(),close()方法哦。

    以上才能保证追加对象不会出错。

    展开全文
  • 这几天做一个小的聊天项目用到对象序列化的知识,发现对象序列化不能像普通文件一样直接追加对象。每次写入对象都会被覆盖。弄了2个多小时终于解决了。Java默认的对象序列化是每次写入对象都会写入一点头aced 0005...

    这几天做一个小的聊天项目用到对象序列化的知识,发现对象序列化不能像普通文件一样直接追加对象。每次写入对象都会被覆盖。弄了2个多小时终于解决了。Java默认的对象序列化是每次写入对象都会写入一点头aced 0005(占4个字节),然后每次读取都读完头然后在读内容。解决方法就是先判断文件是否存在。如果不存在,就先创建文件。然后写了第一个对象,也写入了头aced 0005。追加的情况就是当判断文件存在时,把那个4个字节的头aced 0005截取掉,然后在把对象写入到文件。这样就实现了对象序列化的追加。代码如下:

    首先我们要写一个对类,用于对象的序列化,这个类实现了Serializable接口。类的定义如下:

    59c01f89b0b61e8ae8f1106ad142c421.png

    packageqq.client.tools;import java.io.*;/*** 这是对象序列化的程序

    * 实现了对象序列化的追加

    *@authorAdministrator

    **/

    public classObjectOutputTest {/***@paramargs

    *@throwsException*/

    public static void main(String[] args) throwsException {//TODO Auto-generated method stub

    Message m = newMessage();

    m.setName("aaaaaaaaaaaaaaaaaaaaa");

    File file=new File("D:\\jjm.txt");boolean isexist=false;//定义一个用来判断文件是否需要截掉头aced 0005的

    if(file.exists()){ //文件是否存在

    isexist=true;

    FileOutputStream fo=new FileOutputStream(file,true);

    ObjectOutputStream oos= newObjectOutputStream(fo);long pos=0;if(isexist){

    pos=fo.getChannel().position()-4;//追加的时候去掉头部aced 0005

    fo.getChannel().truncate(pos);

    }

    oos.writeObject(m);//进行序列化

    System.out.println("追加成功");

    }else{//文件不存在

    file.createNewFile();

    FileOutputStream fo=newFileOutputStream(file);

    ObjectOutputStream oos= newObjectOutputStream(fo);

    oos.writeObject(m);//进行序列化

    oos.close();

    System.out.println("首次对象序列化成功!");

    }

    }

    }

    下面是反系列化的实现。注意要在循环外面关闭流,在里面关闭会出现句柄无效的错误。

    package qq.client.tools;

    import java.io.*;

    public class ObjectInputTest {

    /**这是反序列化的程序

    * 实现从文件读取多个对象

    * @param args

    */

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    File file = new File("D:"+File.separator+"jjm.txt");

    if(file.exists()){

    ObjectInputStream ois;

    try {

    FileInputStream fn=new FileInputStream(file);

    ois = new ObjectInputStream(fn);

    while(fn.available()>0){//代表文件还有内容

    Message p = (Message)ois.readObject();//从流中读取对象

    System.out.println(p.getName());

    }

    ois.close();//注意在循环外面关闭

    } catch (Exception e1) {

    // TODO Auto-generated catch block

    e1.printStackTrace();

    }

    }

    }

    }

    整个序列化对象的追加与从文件读取多个对象实就实现了。

    展开全文
  • public static boolean updateFile(String str) {  str = "test";  boolean blg = false;  try {  ...  //定义一个类RandomAccessFile的对象,并实例化  rf.seek
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼import java.io.*;class Person implements Serializable{private String username;private int password;public Person(String username, int password) {this.username...
  • import java.io.*; String path=request.getRealPath("/example/filetest"); RandomAccessFile rf=new RandomAccessFile(path + "\\WriteData.txt","rw"); //定义一个类RandomAccessFile的对象,并实例化 ...
  • 这几天做一个小的聊天项目用到对象序列化的知识,发现对象序列化不能像普通文件一样直接追加对象。每次写入对象都会被覆盖。弄了2个多小时终于解决了。Java默认的对象序列化是每次写入对象都会写入一点头aced 0005...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼import java.io.*;class Person implements Serializable{private String username;private int password;public Person(String username, int password) {this.username...
  • 在Jackson网站上,我想出了如何从文件中读取和写入,但在我的基本程序中,我也想附加.我基本上试图存储一个购物清单列表.有一个购物清单对象,其中包含商店名称,该商店的amd商品.麻烦的是我无法找到将另一个条目追加到...
  • 注意: 当我们使用对象流的时候,我们向文件中写入或者是读出都是用的序列化对象,而序列化对象写入文件时,系统会自动添加aced 0005的一个头部,并且占4个字节,这个我在网上看到的,经过验证确实如此。...
  • 使用ObjectOutputStream,如果以追加的方式,在一个文件中末尾追加写入object,那每次都会在写入时增加特定的文件头信息,而这些头信息如果每次都写入文件中,在使用ObjectInputStream读取这个文件object时就会出现异常...
  • 对象流ObjectInputStream ObjectOutputStream类分别是InputStream和OutputStream的子类,对象输出流使用writeObject(Object obj)方法,将一个对象obj写入到一个文件,使用readObject()读取一个对象。构造方法:...
  • 1,建立联系:File对象 2.选择流 文件输入流 InputStream FileInputStream 3.操作:byte[] car = new byte[1024]; +read 读取大小 4.释放资源:关闭//建立联系 File src = new File("d:/a.txt"); //选择流 ...
  • 代码如下:/**** @param path* path:保存日志文件路径* @param content* content:日志内容*/public static void writeFile...try {// 通过这个对象来判断是否向文本文件追加内容// boolean addStr = append;w...
  • 这几天做一个小的聊天项目用到对象序列化的知识,发现对象序列化不能像普通文件一样直接追加对象。每次写入对象都会被覆盖。弄了2个多小时终于解决了。Java默认的对象序列化是每次写入对象都会写入一点头aced 0005...
  • 这几天做一个小的聊天项目用到对象序列化的知识,发现对象序列化不能像普通文件一样直接追加对象。每次写入对象都会被覆盖。弄了2个多小时终于解决了。java默认的对象序列化是每次写入对象都会写入一点头aced 0005...
  • Android之文件数据存储一、文件保存数据介绍Activity提供...File对象适合按照从开始到结束的顺序不跳过地读取或写入大量数据。例如,它适合于图片文件或通过网络交换的任何内容。数据存储的默认位置:/data/data//fi...
  • 今天学习对象序列化的时候,自己每次写入同一个文件,读取的时候只能读到第一次写入的Object,读取后面写入的Object都会报java.io.StreamCorruptedException错误,经过搜索,发现每次写入对象的时候,Java默认的对象...
  • 现在我想可以实现追加写入数据的功能,也就是说在生成一个子文件00后,可以追加数据到00文件中,直到00文件大小10mb后,再创建01文件,而不是每次都创建新的文件,如下图~~~ 需要大家的指点,多谢~~~ [code=...
  • 问题描述: 用类ObjectOutputStream向文件写读对象时,碰到一个问题:新建一个文   件,用输出流ObjectOutputStream向文件连续写几... 问题出现的原因:ObjectOutputStream建立后第一次写入一个对象时, 会在对...
  • java中建立文件输出流,当文件不存在时会新建一个文件:如果有同名文件,自动覆盖。不存在时自动建立。FileOutputStream的默认构造方法是直接覆盖掉原来的文件,而FileOutputStream(File file, boolean append) 的...
  • public static void main(String[] ...}/*** @param year 输入的年* @param c Counyry对象* @return 日志中追加的后缀*/public static String Panduan(String year,Country c) {String string=null;if (year.equal...
  • -------------------------------------java中字符流输出流FileWriter的追加和输出换行----------------------------在文件对象写入内容的时候,入过文件对象已经有了其他的内容,这时候我们在使用write方法写入...
  • public static void main(String[] args).../*** @param year 输入的年* @param c Counyry对象* @return 日志中追加的后缀*/public static String Panduan(String year,Country c) {String string=null;if (year.equ...
  • java io流之文件

    2018-10-21 12:46:54
    1.File对象的建立 Flie dest = new File(“文件路径”); 2.选择流 OutputStream os = null; os = new FileOutputStream(文件名,是否追加);//true是追加,false是覆盖,若路径中没有原文件,则会自动创建一个空...
  • java文件操作

    2016-12-18 09:57:18
    追加”的时候,在生成流对象时,设置第二个参数为true。FileOutputStream fos=new FileOutputStream(toFile,true);//设置成true可以追加 package CH9.T01;import java.io.IOException;/** * Created by Fant on ...
  • jdk 1.8 IEDA设置可以追加写入后,向目标文件序列化多个同一对象,再序列化出来时,因为反序列化时头部信息只读取一次,报出异常。请问该怎么解决?或者代码写的有问题?import java.io.*;/*** 完成多个对象的序列化...
  • 这个问题已经解决,非常感谢Aguo的文章:自定义ObjectOutputStream,解决追加写入后,读取错误的问题。在这篇文章中我找到了答案,同时对作者的源代码添加了一些注解。解决方案请看文章最后。1...

空空如也

空空如也

1 2 3 4 5
收藏数 86
精华内容 34
关键字:

java追加对象写入文件

java 订阅