精华内容
下载资源
问答
  • 1.读取网页里面的内容 CInternetSession httpSession ;  CHttpFile * htmlFile=NULL ;   //打开网页  htmlFile=(CHttpFile*)httpSession.OpenURL(...//读取网页数据  CString str;

     1.读取网页里面的内容

    CInternetSession httpSession ;



     CHttpFile * htmlFile=NULL ;


     
    //打开网页


     htmlFile=(CHttpFile*)httpSession.OpenURL("http://www.baidu.com");


     
    //读取网页数据


     CString str;


     CString info;

    htmlFile->ReadString(str); //每次读取一行

    //释放


     htmlFile->Close();


     httpSession.Close();

    2.将从网页上读出的数据写入文件中

    CStdioFile file;
    if(!file.Open("aa.txt",CFile::modeCreate|CFile::modeReadWrite))
    {
    MessageBox("打开文件失败!");
    }

    while(htmlFile->ReadString(str))
    {

    file.SeekToEnd();
    file.WriteString(
    str);
    file.WriteString("\n");
    }
    file.Close();

    3.从文件中读出数据

    CStdioFile readfile;
    if(readfile.Open("aa.txt",CFile::typeText|CFile::modeReadWrite))
    {
    readfile.SeekToBegin();
    readfile.ReadString(info);

    }

    展开全文
  • ,因为无法一个链表类型的数据直接写入文件。我们需要 运算符重载。 重载运算符: template fstream &operator (fstream &file, List<T> &list) {  Node<T> *tmp = list.getFirstNode();  ...
    就算世界荒芜,总有一个人,他会是你的信徒。          ----《独木舟里的星星》
    第一步:创建一个节点
    template < typename T >
    class Node
    {
    public:
         Node (T data)
        {
            m_data = data;
            m_pNext = NULL ;
        }

         const T & getData ()
        {
             return m_data;
        }

        Node < T > * & getNext ()
        {
             return m_pNext;
        }
    private:
        T m_data;
        Node * m_pNext;
    };
         这里用到了类模板,因为这里的数据部分类型无法确定。


    第二步:创建链表
    template < typename T >
    class List
    {
    public:
         List ()
        {
            m_iLen = 0 ;
            m_pFirstNode = NULL ;
        }

        Node < T >* getFirstNode ()
        {
             return m_pFirstNode;
        }

         int getListLen ()
        {
             return m_iLen;
        }

         void insert (T data)
        {
            Node < T > * node = new Node < T > (data);
            node-> getNext () = m_pFirstNode;
            m_pFirstNode = node;
            m_iLen ++ ;
        }

         void display ()
        {
            Node < T > * tmp = m_pFirstNode;
             for ( int i = 0 ; i < m_iLen; i ++ )
            {
                cout << tmp-> getData () << endl;
                tmp = tmp-> getNext ();
            }
        }

    private:
         int m_iLen;
        Node < T > * m_pFirstNode;
    };
           一般习惯将链表头定义的与其他节点不同,链表头可以放很多信息,例如:链表长度、作者、修改人、创建日期等等,当后面节点加入的时候不会每个节点都有这些信息。


    。。。可以在主函数中试一下链表。。。
    int main(void)
    {
        List<int> intList;
        intList.insert(2);
        intList.insert(1);
        intList.insert(5);
        intList.insert(3);
        intList.insert(4);
        cout << "打印链表" << endl;
        intList.display();


    第四步: 链表写好后,我们将链表写入文件中
            fstream file1;
            file1.open("int.txt");
            file1 << intList;
            将文件以读写的方式打开,记得要提前创建文件int.txt,因为以读写方式打开文件的时候,如果文件不存在,程序不会自动创建。同样,以只读打开也是一样,只有以只写打开的时候才会自动创建。如果仅仅这样写,编译的时候肯定 无法通过 ,因为无法将一个链表类型的数据直接写入文件。我们需要将 <<运算符重载。
    重载运算符: <<
    template<typename T>
    fstream &operator << (fstream &file, List<T> &list)
    {
        Node<T> *tmp = list.getFirstNode();
        int len = list.getListLen();
        for(int i = 0; i < len; i++)
        {
            file << tmp->getData();
            tmp = tmp->getNext();
        }
        return file;
    }
    写完后,再执行file1.intList; 就不会报错了。


    第五步:从文件中读取数据到链表
        file1.seekg(0, ios_base::beg);
        cout << "--------读取文件里的链表------------" << endl;
        List<int> intList2;
        int data = 0;
        while(1)
        {
            file1 >> data;
            intList2.insert(data);
            if(file1.eof())
            {
                break;
            }
        }
        intList2.display();
        file1.close();
    思路很简单,首先将文件的读写位置设置到首部,因为我们在写入文件的时候,读写位置到了最后,这时候直接读是读不到数据的。然后将文件里的内容读到临时变量data中,然后插入的时候调用有参构造函数,输入参数data,生成新链表。读取完退出,最后打印显示。



    上面的链表只针对一般的数据类型有效,如果我们的数据部分是自己构造的类呢?
    第一步:创建一个类(以student为例)
    class Student
    {
    public:
         Student ( int id = 1000 , string name = " " , float score = 0.0f )
        {
            m_iId = id;
            m_strName = name;
            m_fScore = score;
        }

         friend ostream & operator << (ostream & out, const Student & stu);

    private:
         int m_iId;
        string m_strName;
         float m_fScore;
    };


    第二步:重载运算符 <<
    ostream & operator << (ostream & out, const Student & stu)
    {
        out << " " << stu. m_iId << " " << stu. m_strName << " " << stu. m_fScore ;
    }
    这里重载是因为1、打印的时候无法直接直接输入一个Student类型,即:cout << stu 是无法直接实现的, 2、写入文件的时候同样无法直接写入一个Student类型。但为什么只重载ostream中的<<就可以同时实现两个呢?因为fstream继承了iostream,而iostream又继承了istream和ostream。关系如下图:


    这之后的操作大同小异,大家可以自行理解。
    下面是全代码,以及打印结果:

    #include <iostream>
    #include <fstream>
    using namespace std ;

    class Student
    {
    public:
         Student ( int id = 1000 , string name = " " , float score = 0.0f )
        {
            m_iId = id;
            m_strName = name;
            m_fScore = score;
        }

         friend ostream & operator << (ostream & out, const Student & stu);
         //friend fstream &operator << (fstream &file, const Student &stu);
    private:
         int m_iId;
        string m_strName;
         float m_fScore;
    };

    ostream & operator << (ostream & out, const Student & stu)
    {
        out << " " << stu. m_iId << " " << stu. m_strName << " " << stu. m_fScore ;
    }

    template < typename T >
    class Node
    {
    public:
         Node (T data)
        {
            m_data = data;
            m_pNext = NULL ;
        }

         const T & getData ()
        {
             return m_data;
        }

        Node < T > * & getNext ()
        {
             return m_pNext;
        }
    private:
        T m_data;
        Node * m_pNext;
    };


    template < typename T >
    class List
    {
    public:
         List ()
        {
            m_iLen = 0 ;
            m_pFirstNode = NULL ;
        }

        Node < T >* getFirstNode ()
        {
             return m_pFirstNode;
        }

         int getListLen ()
        {
             return m_iLen;
        }

         void insert (T data)
        {
            Node < T > * node = new Node < T > (data);
            node-> getNext () = m_pFirstNode;
            m_pFirstNode = node;
            m_iLen ++ ;
        }

         void display ()
        {
            Node < T > * tmp = m_pFirstNode;
             for ( int i = 0 ; i < m_iLen; i ++ )
            {
                cout << tmp-> getData () << endl;
                tmp = tmp-> getNext ();
            }
        }
        
    private:
         int m_iLen;
        Node < T > * m_pFirstNode;
    };

    template < typename T >
    fstream & operator << (fstream & file, List < T > & list)
    {
        Node < T > * tmp = list. getFirstNode ();
         int len = list. getListLen ();
         for ( int i = 0 ; i < len; i ++ )
        {
            file << tmp-> getData ();
            tmp = tmp-> getNext ();
        }
         return file;
    }


    int main ( void )
    {
        List < int > intList;
        intList. insert ( 2 );
        intList. insert ( 1 );
        intList. insert ( 5 );
        intList. insert ( 3 );
        intList. insert ( 4 );
        cout << "打印链表" << endl;
        intList. display ();

        fstream file1;
        file1. open ( "int.txt" );
        file1 << intList;
        file1. seekg ( 0 , ios_base::beg);
        cout << "--------读取文件里的链表------------" << endl;
        List < int > intList2;
         int data = 0 ;
         while ( 1 )
        {
            file1 >> data;
            intList2. insert (data);
             if (file1. eof ())
            {
                 break ;
            }
        }
        intList2. display ();
        file1. close ();

        cout << endl << endl;
        List < Student > stuList;
        stuList. insert ( Student ( 1001 , "aa" , 23 ));
        stuList. insert ( Student ( 1002 , "bb" , 14 ));
        stuList. insert ( Student ( 1003 , "cc" , 53 ));
        stuList. insert ( Student ( 1004 , "dd" , 25 ));
        stuList. insert ( Student ( 1005 , "ee" , 94 ));
        cout << "打印链表" << endl;
        stuList. display ();

        fstream file2;
        file2. open ( "student.txt" );
        file2 << stuList;
        file2. seekg ( 0 , ios_base::beg);
        cout << "-------读取文件里的链表------------" << endl;
        List < Student > stuList2;
         int id = 0 ;
        string name = " " ;
         float score = 0.0f ;
         while ( 1 )
        {
            name. clear ();
            file2 >> id >> name >> score;
            stuList2. insert ( Student (id, name, score));
             if (file2. eof ())
            {
                 break ;
            }
        }
        stuList2. display ();
        file2. close ();

         return 0 ;
    }





    QQ:1786610699      倔强的木木      2017年8月26日
    展开全文
  • "把数据写入到fle.txt文件昂中\n" ) ; srcj ( head ) ; break ; case 1 : printf ( "从fle.txt文件当中读取数据\n" ) ; prin ( head ) ; break ; case 3 : append ( head ) ; break ...

    寻开心大哥写的

    在这里插入代码片
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    struct cj {
     char xh[10];
     char name[10];
     int gs;
     int cx;
     struct cj *next;
    };
    typedef struct cj jj,*listlink;
    void srcj(listlink head);
    void prin(listlink head);
    void append(listlink head);
    void display(listlink head);
    int main(void) 
    {
     int n;
     listlink head;
     head = (listlink)malloc(sizeof(jj));
     head->next = NULL;
     while(1) 
     {
      printf("0:Quit 1: 从文件读 2:写入文件  3:添加:");
      scanf("%d",&n);
      switch (n) 
      {
       case 2:
        printf("把数据写入到fle.txt文件昂中\n");
        srcj(head);
        break;
       case 1:
        printf("从fle.txt文件当中读取数据\n");
        prin(head);
        break;
       case 3:
        append(head);
        break;
       case 0:
        return 0;
        break;
       case 4:
        display(head);
        break;
      }
     };
     return 0;
    }
    /*
    把链表写入文件
    */
    void srcj(listlink head)
    {
     if ( head == NULL ) return;
     listlink p = head->next;
     FILE *fp;
     if( (fp=fopen("fle.txt","wt") )== NULL) 
     {
      printf("打开写入文件fle.txt失败\n");
      return;
     }
     while(p) 
     {
      fprintf(fp,"%s %s %d %d\n",p->xh, p->name, p->gs, p->cx);
      p = p->next;
     }
     fclose(fp);
    }
    /*
    从文件读取内容
    */
    void prin(listlink head)
    {
     if ( NULL == head) return;
     FILE *fp;
     listlink p = head;
     if((fp=fopen("fle.txt","r")) == NULL)
     {
      printf("打开fle.txt文件失败\n");
      return ;
     }
     while(1)
     {
      listlink q = (listlink)malloc(sizeof(jj));
      int nRead = fscanf(fp,"%s%s%d%d",q->xh,q->name, &q->gs,&q->cx);
      if ( 4 == nRead ) 
      {
       printf("%s\t%s\t%d\t%d\n",q->xh,q->name,q->gs,q->cx);
       p->next = q;
       p = q;
      }
      else 
      {
       free(q);
       break;
      }
     }
     p->next = NULL;
     fclose(fp);
    }
    void append(listlink  head) 
    {
     if ( NULL == head) return;
     listlink q = head;
     while(q->next ) q=q->next;
     listlink p = (listlink) malloc(sizeof(jj));
     printf("input data\n");
     scanf("%s%s%d%d", p->xh, p->name, &p->gs, &p->cx);
     q->next = p;
     p->next = NULL;
    }
    void display(listlink head) 
    {
     if ( NULL == head ) return;
     listlink p = head->next;
     while (p) 
     {
      printf("%s\t%s\t%d\t%d\n", p->xh, p->name, p->gs, p->cx);
      p=p->next;
     }
    }
    展开全文
  • 先要区分两个名词:FileInputStream和FileOutputStream。...将数据写入文件中时,使用FileOutputStream。 读取文件数据到byte数组典型做法: private byte[] readFileToByteArray(String path) { ...

    先要区分两个名词:FileInputStream和FileOutputStream。这两个名词都是相对于应用来说的,而不是相对于文件。

    从文件中读取数据时,使用FileInputStream;将数据写入文件中时,使用FileOutputStream。

    读取文件数据到byte数组典型做法:

    private byte[] readFileToByteArray(String path) {
        File file = new File(path);
        if(!file.exists()) {
            Log.e(TAG,"File doesn't exist!");    
            return null;
        }
        try {
            FileInputStream in = new FileInputStream(file);
            long inSize = in.getChannel().size();//判断FileInputStream中是否有内容
            if (inSize == 0) {
                Log.d(TAG,"The FileInputStream has no content!");
                return null;
            }
                  
            byte[] buffer = new byte[in.available()];//in.available() 表示要读取的文件中的数据长度 
            in.read(buffer);  //将文件中的数据读到buffer中
            return buffer;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                return null;
            } 
            //或IoUtils.closeQuietly(in);
        } 
    } 

    将读出来的数据写入文件中并强制刷新到文件中:

    private void writeAndFlush(String path, byte[] buffer) {
        try {
            FileOutputStream out = new FileOutputStream(path);//指定写到哪个路径中
            FileChannel fileChannel = out.getChannel();
            fileChannel.write(ByteBuffer.wrap(buffer)); //将字节流写入文件中
            fileChannel.force(true);//强制刷新
            fileChannel.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOExceptioin e) {
            e.printStackTrace();
        }
    }

    此处使用的FileChannel.force()方法刷新。

    应用场景:

    Andorid系统的设计中,SettingsProvider的对应文件中,如果某个属性发生改变时,先是修改了缓冲区的数据,并未立即flush到文件中。

    而Android系统的设计是每5s会检测一次属性是否发生改变,如有变化就会flush到文件中。

    因此,如在设置了音量或亮度后,如果立即重启,重启前后的值是不一致的,因为值还未被flush到文件中。

    因此可以在SettingsProvider的SettingsState.java的doWriteState()接口(该接口是修改settings_system.xml等文件的接口)中,增加强制刷新的code,即如上所述,将缓冲区的数据强制刷新到文件中。

    这样手动强制刷新的好处是,修改了属性后,值立马保存到了文件中,即便立刻重启,重启前后的值也是一致的。

    不能采用修改系统设计的每5s检测一次进行flush的操作,因为若将时间缩短,则频繁flush,IO操作的CPU占用率就会很高。

    展开全文
  • Python将数据写入文件

    万次阅读 2019-01-11 15:45:15
    由于近期要处理一些计算数据,网上百度了...好了废话说完了,接下来正式进入如何利用Python将数据写入.txt、.xls或者.csv文件:   一般做相应的计算需要处理二维数据,主要介绍二维列表或矩阵写入文件;当然也...
  • 预处理部分从文本元数据文件中读入文件,然后解析成数据表的内容,最后写入数据库。这个过程可以分为读文件、解析和写库三个部分。 读文件:使用br = new BufferedReader(new FileReader(file));来打开文件
  • Excel MFC 数据交互 打印 查找 替换 写入 读出 ole 写入txt日记文件 CLogFile
  • 使用RandomAccessFile流一个文本文件读出导致写入到另一个文件当中。
  • 把二进制文件中的数据读出并写入到一个txt文件中去 (read the data a binary file, and write the data into a txt file)
  • 要求新建两个文件,file1、file2,要求打开file1文件,分别对每一行数字进行求和,并将每一行的结果写在file2中。 file1: 20 30 40 20 52 63 52 52 85 52 8 456 522 25 36 85 96 74 程序源码: 定义一个求和函数 def...
  • 写入文件并保存一段时间后读出,发现数组成员有负数的情况,这时再计算md5值,和原来记录的不一样了。 这个文件比较大,有6.8G,不知道哪位曾碰到过这样的问题,我怀疑是不是与文件系统的缓存有关,原来计算md5时...
  • 转载自 wuhuang040924 ...先附上一份文件读写操作:(今天一天头都晕,快成猪脑子了^_^) ... 返回值:成功返回写入文件的字节数,失败返回-1 write函数向filedes文件中写入nbytes字节数据,数
  • 读出: file_get_contents("test.txt");//读取文件 参数:文件路径 ...file_put_contents() 函数用于把字符串写入文件,成功返回写入到文件内数据的字节数,失败则返回 FALSE。 语法: int fi...
  • 使用ByteArrayOutputStream将数据写入本地文件 在一个项目中做一次性校验部分,需要校验后数据写入表格后上传。巧的是,服务器Down了。作为一个新手实习生菜鸟,为了测试自己的代码和输出结果有没有毛病,在大神...
  • Android 创建txt文件存到SD卡,向txt文件写入内容,读出txt文件内容 https://blog.csdn.net/qq_31939617/article/details/80911397
  • 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉...
  • 写入操作用write(fd, vec_info, 26000000); 注:vec_info为一个内存块的首地址,此内存块共26000000字节,可以分解成13Byte*200万条记录,每条记录就是一个结构体, 此内存块的首地址就是第一条记录...
  • 一,FileWritter写入文件 FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指定一个true (布尔)值作为FileWritter构造函数的第二个参数,它会保留现有的内容,...
  • * 功能:生成一棵二叉树,写进文件,再读出, * 并将其重构成一个二叉树 * * author:kangquan2008@scut blog:http://blog.csdn.net/kangquan2008 * ******************************/ #includ
  • 在使用OpenCV开发程序时,如果想查看矩阵数据,比较费劲,而matlab查看数据很方便,有一种方法,是matlab和c++混合...1、Mat的数据写入指定文件 为了方便拿来主义者,我直接把这个函数贴出来,你只要把代码拷贝
  • 调用字符缓冲输出流中的方法write(),把数据写入内存缓冲区 bw.write("沉迷Java,无法自拔!"); //bw.write("\r\n"); bw.newLine(); } //3.调用字符缓冲输出流中的方法flush(),把内存缓冲区中的数据刷新到...
  • 使用fprintf(); fscanf(); 向文件写入读出数据
  • 编写一个应用程序,要求LinkedList创建的对象写入文件,在读出一个LinkedList节点中的数据。 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...
  • 将数据写入.txt文件

    千次阅读 2016-01-27 21:25:46
    将数据写入.txt文件
  • map写入文件及从文件读出

    千次阅读 2016-08-13 11:55:25
    代码: using std::map; using std::ofstream; using std::ifstream;... // 待存储的map m// 存入文件out.txt ofstream of("out.txt"); for (const auto &i : m) { of << i.first << ' ' << i.second
  • java将数据写入xml与读取xml文件数据

    千次阅读 2017-02-28 17:25:59
    //====================测试将数据从xml读出 List,Object>> maplist=new ArrayList,Object>>(); Map,Object> map=new HashMap, Object>(); Map,Object> parms=new HashMap,Object>(); map.put("first...
  • 假设现在文件中存储的是 1 computer 2 computer 3 computer 三条记录, 我想把第一条数据改成 5 ...把1 computer 覆盖掉,而不是把数据全部读出后修改完再重新写入,就像c语言的 fwrite函数,不知如何操作?谢谢了
  • C链表使用fread和fwrite写入文件和从文件读出 具体代码如下 //结构类型 typedef struct Lnode { ElemType data; struct Lnode *next; }Lnode, *Linknode; //写文件的方法 status SaveList(Linknode &amp;L) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,281
精华内容 34,512
关键字:

如何将数据写入文件并读出