`
444878909
  • 浏览: 636128 次
文章分类
社区版块
存档分类
最新评论

黑马程序员_<<properties,打印流,合并流,分割流>>

 
阅读更多

--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------


1. Properties

1.概述

Properties是Hashtable的子类,存储的格式那么也是键值对,但是键和值都是字符串类型

2.常用方法

 public class PropertiesDemo1 {
   public static void main(String[] args) {
     Properties pro = new Properties();
     /* setProperty(String key,String value)添加键和值 */
     pro.setProperty("java01", "001");
     pro.setProperty("java02", "002");
     /* 通过键获得值:String getProperty(String key) */
     System.out.println(pro.getProperty("java01"));
     /* Set<String>stringPropertyNames()获得键集 */
     Set<String> set = pro.stringPropertyNames();
     for (String s : set)
        System.out.println(s + ":" + pro.getProperty(s));
   }
 
}
结果:
001
java02:002
java01:001

3.配置文件

将配置文件中的信息存到集合中,然后修改其键和值,然后在传给文件。配置文件中的信息都是用=号存储的,例如:张三=001

第一种方法:我们不使用Properties对象,就是用集合来操作,思路:我们将文件读取出来,然后对每一行进行用=分割,把左边的存为键,把右边的存为值。


import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Properties;
import java.util.Set;
 
public class PropertiesDemo1 {
   public static void main(String[] args) throws IOException {
     BufferedReader br = new BufferedReader(new FileReader("F:\\pro.txt"));//读取流
     HashMap<String, String> map = new HashMap<String, String>();//map集合
     String line = null;
     while ((line = br.readLine()) != null) {
        String[] s = line.split("=");
        map.put(s[0], s[1]);
     }
     System.out.println(map);
   }
 
}
结果:
{java02=002, java03=003, java01=001}


第二种方法:我们使用Properties对象,这样我们可以方便的加载流,来操作文件。

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Properties;
import java.util.Set;
 
public class PropertiesDemo1 {
   public static void main(String[] args) throws IOException {
     /* void load(Reader reader)将读取流字符流加载到集合中 */
     Properties pro = new Properties();
     FileReader fr = new FileReader("F:\\pro.txt");
     pro.load(fr);// 将字符读取流中读取的文件放到Properties对象中
     System.out.println("加载后的集合:" + pro);
     /* 下面我们修改集合中的数值 */
     pro.setProperty("java02", "hello");
     /*
      * store(Writer writer,String
      * comments)通过字符写入流,把集合中的信息更新配置文件,comments是注视内容
      */
     FileWriter fw = new FileWriter("F:\\pro.txt");
     pro.store(fw, "java");// 更新配置文件,注释为:java
     fr.close();
     fw.close();
   }
 
}
结果:
加载后的集合:{java03=003, java02=002, java01=001}


4.计算程序运行次数


 importjava.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Properties;
 
public class PropertiesDemo {
 
      publicstatic void main(String[] args) throws IOException {
           /*
            * 计算程序的运行次数 思路: 1.创建一个配置文件,然后然后里面定义了一个计数器
            * 2.每次运行的时候,都取出来,然后自增,然后再存回去
            */
 
           Filefile = new File("F:\\pro.ini");
           if(!file.exists())
                 file.createNewFile();
 
           Propertiespro = new Properties();
           pro.load(newFileInputStream(file));// 加载流
           Stringvalue = pro.getProperty("count");
           intcount = 0;
           if(value != null)
                 count= Integer.parseInt(value);
           count++;//自增
           pro.setProperty("count",count + "");// 改变值
           pro.store(newFileOutputStream(file), "java for count");// 更新文件
           System.out.println(pro);
      }
 
}结果:
运行一次,count就+1.

2. 打印流

PrintStream:字节打印流

其构造方法传入的参数:

File对象,字符串路径,字节流。

PrintWriter:字符打印流

其构造方法传入的参数有:

File对象,字符串路径,字节流,字符流。

另外注意的是:字符流中传入的是流的话,可以设置自动刷新,只有使用println,printf,format方法可以自动刷新。

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
 
public class PrintStreamDemo {
   public static void main(String[] agrs) throws IOException {
     // File f=newFile("F:\\demo.txt");
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     PrintWriter pw = new PrintWriter(System.out,true);//true表示自动刷新,但是必须是println方法
     String line = null;
     while ((line = br.readLine()) != null) {
        if ("over".equals(line))
          return;
        pw.println("内容是:" + line);
        //pw.flush();
 
     }
     br.close();
     pw.close();
   }
}


现在是把内容打印在了控制台上,也可以打印在文件中,把PrintWriter流对象更改一下就可以的啊。

3. 合并流

将多个流合并成一个流,便于操作

例如:三个文件的内容写入到第四个文件中,那先把指定到前三个文件的流合并成一个流,然后指向第四个进行读取后,写入

1.可以现将两个流合并到一个流,然后再把合并流和另外一个流再合并,public SequenceInputStream(InputStreams1,InputStream s2)

2.也可以使用集合,public SequenceInputStream(Enumeration<? extends InputStream>e)

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;
import java.io.FileInputStream;
 
public class SqueDemo {
  public static void main(String[] agrs) throws IOException {
    Vector<FileInputStream> v = new Vector<FileInputStream>();
    v.add(new FileInputStream("F:\\1.txt"));
    v.add(new FileInputStream("F:\\2.txt"));
    v.add(new FileInputStream("F:\\3.txt"));
    Enumeration<FileInputStream> en = v.elements();
    SequenceInputStreamsis = new SequenceInputStream(en);
 
    FileOutputStream out = new FileOutputStream("F:\\4.txt");
    byte[] b = new byte[1024];
    int len = 0;
    while ((len = sis.read(b)) != -1) {
      out.write(b, 0, len);
      out.flush();
    }
    sis.close();
    out.close();
 
  }
}


4. 切割流

将图片分割后,然后在合并

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;
 
public class PhotoDemo {
  public static void main(String[] args) throws IOException {
 
    FenGe();
 
    HeBing();
 
  }
 
  private static void HeBing() throws FileNotFoundException, IOException {
    /* 其实这个也可以使用循环,然后添加到集合, */
    Vector<FileInputStream> v = new Vector<FileInputStream>();
    v.add(new FileInputStream("F:\\part\\1.part"));
    v.add(new FileInputStream("F:\\part\\2.part"));
    v.add(new FileInputStream("F:\\part\\3.part"));
    v.add(new FileInputStream("F:\\part\\4.part"));
    v.add(new FileInputStream("F:\\part\\5.part"));
    Enumeration<FileInputStream> en = v.elements();
    SequenceInputStream sis = new SequenceInputStream(en);
 
    FileOutputStream out = new FileOutputStream("F:\\part\\1.bmp");
    byte[] b = new byte[1024];
    int len = 0;
    while ((len = sis.read(b)) != -1) {
      out.write(b, 0, len);
      out.flush();
    }
    sis.close();
    out.close();
  }
 
  /* 分割 */
  private static void FenGe() throws FileNotFoundException, IOException {
    FileInputStream input = new FileInputStream("F:\\1.png");
 
    FileOutputStream out = null;
    byte[] buf = new byte[1024 * 100];
    int count = 1;
    int len = 0;
    while ((len = input.read(buf)) != -1) {
      out = new FileOutputStream("F:\\part\\" + (count++) + ".part");// 分割后的后缀名自己可以自定义
      out.write(buf, 0, len);
      out.flush();
      out.close();
 
    }
    input.close();
  }
 
}



其实也可以分割媒体,电影和音乐的。



--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------


分享到:
评论

相关推荐

    springboot 基础简易实例, maven项目

    &lt;properties&gt; &lt;java.version&gt;1.8&lt;/java.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter&lt;/artifactId&gt; &lt;/dependency&gt; ...

    hadoop mapreduce wordcount

    &lt;properties&gt; &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.hadoop&lt;/groupId&gt; &lt;artifactId&gt;hadoop-common&lt;/...

    Jive资料集

    系统设计&lt;br&gt; 1 jive设计思路 &lt;br&gt; 2 jive的工作内幕 &lt;br&gt; 3 Jive源代码研究 &lt;br&gt; 4 Jive中的设计模式 &lt;br&gt; 5 jive学习笔记 &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;数据库设计&lt;br&gt; 1 Jive Forums数据库说明(英文) &lt;br&gt; 2 Jive KB...

    dorado5高级用法,原理,特性完整教程

    &lt;Properties/&gt; &lt;/Field&gt; &lt;Field name="DEPT_ID" label="部门" dataType=""&gt; &lt;Properties/&gt; &lt;/Field&gt; &lt;/Fields&gt; &lt;Parameters/&gt; &lt;Properties/&gt; &lt;/Dataset&gt; &lt;Dataset type="Custom" listener=...

    spring和mybatis结合的maven工程

    &lt;properties&gt; &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;!-- 使用spring-core --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; ...

    jive.chm

    &lt;br&gt;系统设计&lt;br&gt; 1 jive设计思路 &lt;br&gt; 2 jive的工作内幕 &lt;br&gt; 3 Jive源代码研究 &lt;br&gt; 4 Jive中的设计模式 &lt;br&gt; 5 jive学习笔记 &lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;br&gt;设计模式&lt;br&gt; 1 大道至简-Java之23种模式一点就通 &lt;br&gt; 2 设计模式...

    autoconfig-demo.zip

    &lt;properties&gt; &lt;java.version&gt;1.8&lt;/java.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter&lt;/artifactId&gt; &lt;/...

    LambdaProbe 中文包下载

    &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;System monitoring 系统监控 &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Memory monitoring 内存监控 &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Cluster information 集群信息 &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;Log file tailing 实时追踪log文件 &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br...

    elasticsearch学习demo

    &lt;properties&gt; &lt;elasticsearch.version&gt;5.6.0&lt;/elasticsearch.version&gt; &lt;spring-version&gt;5.0.0.RC3&lt;/spring-version&gt; &lt;fastjson-version&gt;1.2.7&lt;/fastjson-version&gt; &lt;junit-version&gt;4.12&lt;/junit-version&gt; &lt;slf4j...

    mapper-4.1.5.jar

    &lt;properties&gt; &lt;tk-mapper.version&gt;4.1.5&lt;/tk-mapper.version&gt; &lt;pagehelper.version&gt;1.2.10&lt;/pagehelper.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;!-- Mybatis通用Mapper --&gt; &lt;dependency&gt; &lt;groupId...

    基于SpringBoot+Vue前后端分离的仓库管理系统后端源码+数据库+项目说明.zip

    &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org....

    Handbook of Fiber Optic Data Communication---part2

    Conclusion &lt;br&gt;730 &lt;br&gt;References &lt;br&gt;732 &lt;br&gt;Appendix A Measurement Conversion Tables &lt;br&gt;735 &lt;br&gt;Appendix &lt;br&gt;B Physical Constants &lt;br&gt;737 &lt;br&gt;Appendix &lt;br&gt;C Index of Professional Organizations &lt;br...

    Handbook of Fiber Optic Data Communication---part3

    Conclusion &lt;br&gt;730 &lt;br&gt;References &lt;br&gt;732 &lt;br&gt;Appendix A Measurement Conversion Tables &lt;br&gt;735 &lt;br&gt;Appendix &lt;br&gt;B Physical Constants &lt;br&gt;737 &lt;br&gt;Appendix &lt;br&gt;C Index of Professional Organizations &lt;br...

    SSM框架整合

    1、整合准备 整合内容: 整合架构:Spring、... &lt;include&gt;**/*.properties&lt;/include&gt; &lt;include&gt;**/*.xml&lt;/include&gt; &lt;/includes&gt; &lt;filtering&gt;false&lt;/filtering&gt; &lt;/resource&gt; &lt;/resources&gt; &lt;/build&gt; &lt;/project&gt;

    ArcIMS地图配置文件,地图服务,请求和响应之间的关系

    &gt;&lt;br&gt;&lt;ARCXML version="1.1"&gt;&lt;br&gt;&lt;REQUEST&gt;&lt;br&gt;&lt;GET_IMAGE&gt;&lt;br&gt;&lt;PROPERTIES&gt;&lt;br&gt;&lt;ENVELOPE minx="-125" miny="25" maxx="-67" maxy="50" /&gt;&lt;br&gt;&lt;IMAGESIZE width="700" height="500" /&gt;&lt;br&gt;&lt;/PROPERTIES&gt;&lt;br&gt;&lt;/GET_...

    Spring + Hibernate + Struts 事务配置小例子(带提示框等小技巧)

    &lt;value&gt;WEB-INF/jdbc.properties&lt;/value&gt; &lt;/list&gt; &lt;/property&gt; &lt;/bean&gt; &lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" dependency-check="none...

    springside-core-4.2.2.GA(含关联的test.jar)

    &lt;properties&gt; &lt;springside.version&gt;4.2.2.GA&lt;/springside.version&gt; &lt;/properties&gt; &lt;dependency&gt; &lt;groupId&gt;org.springside&lt;/groupId&gt; &lt;artifactId&gt;springside-core&lt;/artifactId&gt; &lt;version&gt;${springside.version...

    archetype-catalog(2020最新).zip

    &lt;include&gt;**/*.properties&lt;/include&gt; &lt;include&gt;**/*.xml&lt;/include&gt; &lt;/includes&gt; &lt;/resource&gt; &lt;resource&gt; &lt;directory&gt;src/main/resources&lt;/directory&gt; &lt;includes&gt; &lt;include&gt;**/*.properties&lt;/include&gt; ...

    mvn-examples-1.0&Maven;权威指南中文版

    1. mvn-examples-1.0 ... &lt;module&gt;ch13-properties&lt;/module&gt; &lt;module&gt;ch15-sitegen&lt;/module&gt; &lt;module&gt;ch17-writing-plugins&lt;/module&gt; &lt;module&gt;ch18-alternate-plugins&lt;/module&gt; &lt;/modules&gt; 2.Maven权威指南中文版

    js学习.txt

    &lt;properties&gt; &lt;property&gt; &lt;name&gt;user&lt;/name&gt; &lt;!--value&gt;df80_20171113&lt;/value--&gt; &lt;!--value&gt;sd_2017&lt;/value--&gt; &lt;value&gt;gyl_v80_6008&lt;/value&gt; &lt;/property&gt; &lt;/properties&gt; &lt;password-encrypted&gt;...

Global site tag (gtag.js) - Google Analytics