精华内容
下载资源
问答
  • Java 读取多个文件流合并操作

    千次阅读 2016-02-04 11:47:53
    Java IO编程中还有很值得我们学习的地方,很时候我们都不太注重基础知识的积累;工作越久越感觉没有新意,说明我们错误地高估了自己,如果给你一没有网络的办公环境,你怎么正常开展自己的工作,这是一...

           在Java IO编程中还有很多值得我们学习的地方,很多时候我们都不太注重基础知识的积累;工作越久越感觉没有新意,说明我们错误地高估了自己,如果给你一个没有网络的办公环境,你怎么正常开展自己的工作,这是一个值得思考的问题,我们对网络太过于依赖,以至于懒得去记忆。下面要说的是SequenceInputStream的使用。春节回家,在这里做一个标注以便节后继续研究。

    给大家推荐一个Java IO编程的阅读地址http://tutorials.jenkov.com/java-io/index.html

    package com.boonya.io;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.SequenceInputStream;
    import java.util.Vector;
    
    public class IOSequenceInputStream {
    	
    	public static void main(String[] args) {
    		IOSequenceInputStream io=new IOSequenceInputStream();
    		//io.sample();
    		io.advance();
    	}
    
    	public void sample() {
    		InputStream input1;
    		InputStream input2;
    		SequenceInputStream sequenceInputStream = null;
    		try {
    			input1 = new FileInputStream("c:\\data\\file1.txt");
    			input2 = new FileInputStream("c:\\data\\file2.txt");
    
    			sequenceInputStream = new SequenceInputStream(input1, input2);
    
    			int data = sequenceInputStream.read();
    			while (data != -1) {
    				System.out.println((char)data);
    				data = sequenceInputStream.read();
    			}
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO: handle exception
    		} finally {
    			if (sequenceInputStream != null) {
    				try {
    					sequenceInputStream.close();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		}
    
    	}
    	
    	public void advance() {
    		SequenceInputStream sequenceInputStream=null;
    		try {
    			InputStream input1 = new FileInputStream("c:\\data\\file1.txt");
    			InputStream input2 = new FileInputStream("c:\\data\\file2.txt");
    
    			Vector<InputStream> streams = new Vector<InputStream>();
    			streams.add(input1);
    			streams.add(input2);
    			
    			sequenceInputStream = new SequenceInputStream(streams.elements());
    			
    			int data= sequenceInputStream.read();
    			
    			while(data != -1){
    			    System.out.println((char)data);
    			    data = sequenceInputStream.read();
    			}
    			sequenceInputStream.close();
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally{
    			if (sequenceInputStream != null) {
    				try {
    					sequenceInputStream.close();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		}
    		
    	}
    
    }
    




    展开全文
  • java 多线程读取多个文件

    千次阅读 2019-01-02 10:49:34
    package ... import java.io.*; import java.util.List; import java.util.concurrent.CountDownLatch; ... * 多线程读取多个文件 */ public class FileThread extends Thread{ p...

    工具类代码如下:

    import java.io.*;
    import java.util.List;
    import java.util.concurrent.CountDownLatch;
    
    /**
     * 多线程读取多个文件
     */
    public class FileThread extends Thread{
    
        private final CountDownLatch countDownLatch = new CountDownLatch(10);
        private int fileIndex;
        private List<String> filelist;
        private String filepath = "D:\\LocalFtpServer\\data20181229\\";
        private String movepath = "D:\\LocalFtpServer\\data20181229_01\\";
    
        public int getFileIndex() {
            return fileIndex;
        }
    
        public void setFileIndex(int fileIndex) {
            this.fileIndex = fileIndex;
        }
    
        public List<String> getFilelist() {
            return filelist;
        }
    
        public void setFilelist(List<String> filelist) {
            this.filelist = filelist;
        }
    
        @Override
        public void run() {
    
            for (int i = 0; i < filelist.size(); i++) {
                if (i % 10 == fileIndex) {
                    //读取文件
                    File readfile = new File(filepath + filelist.get(i));
                    InputStreamReader isr = null;
                    try {
                        isr = new InputStreamReader(new FileInputStream(readfile), "UTF-8");
                        BufferedReader reader = new BufferedReader(isr);
                        String line = null;
                        // 一次读入一行,直到读入null为文件结束
                        while ((line = reader.readLine()) != null) {
                            System.out.println(line );
                        }
                        reader.close();
                        isr.close();
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    //读取完后, 移动文件位置
                    readfile.renameTo(new File(movepath + readfile.getName()));
                }
            }
            countDownLatch.countDown();
        }
    }
    
    

    调用测试:

     public static void main(String[] args) throws IOException {
    			String filepath = "D:\\LocalFtpServer\\data20181229\\";
    			File file = new File(filepath);
    			//读取目录下所有文件
    			String[] filelist = file.list();
    			List<String> fList=new ArrayList<String>();
    
    			for (int i = 0; i < filelist.length; i++) {
    				if (filelist[i].startsWith("data") && filelist[i].endsWith(".txt")) {
    					fList.add(filelist[i]);
    				}
    			}
    			for(int i=0;i<30;i++){
    				FileThread fileThread=new FileThread();
    				fileThread.setFileIndex(i);
    				fileThread.setFilelist(fList);
    				fileThread.start();
    			}
    			countDownLatch.await();
    }
    
    展开全文
  • 多线程读取多个文件package thread;import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.concurrent.CountDownLatch;public class ReadMultiFilesByThread { /** ...

    多线程读取多个文件

    package thread;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.util.concurrent.CountDownLatch;
    
    public class ReadMultiFilesByThread {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            long startTime = System.currentTimeMillis();
    
            final int thNum = 4;
            final String filePath3 = "C:\\Users\\IBM_ADMIN\\Downloads\\马达加斯加3全篇英文台词3.txt"; //266M
            final String filePath2 = "C:\\Users\\IBM_ADMIN\\Downloads\\马达加斯加3全篇英文台词2.txt"; //186M
            final String filePath = "C:\\Users\\IBM_ADMIN\\Downloads\\马达加斯加3全篇英文台词.txt"; //39KB
            final String filePath4 = "C:\\Users\\IBM_ADMIN\\Downloads\\carootcert(1).der"; //1KB
    
            CountDownLatch doneSignal = new CountDownLatch(thNum);
            ReadFileThread2 r1 = new ReadFileThread2(doneSignal,filePath);
            ReadFileThread2 r2 = new ReadFileThread2(doneSignal,filePath2);
            ReadFileThread2 r3 = new ReadFileThread2(doneSignal,filePath3);
            ReadFileThread2 r4 = new ReadFileThread2(doneSignal,filePath4);
            r1.start();
            r2.start();
            r3.start();
            r4.start();
            try {
                doneSignal.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            long endTime = System.currentTimeMillis();
            System.out.println("===============================");
            System.out.println("The totally executed time: "+(endTime-startTime));
        }
    
    }
    
    class ReadFileThread2 extends Thread{
        private RandomAccessFile raf;
        private CountDownLatch doneSignal;
        private final int bufLen = 256;
        private String path;
    
        public ReadFileThread2(CountDownLatch doneSignal,String path){
            this.doneSignal = doneSignal;
            this.path = path;
        }
    
    
        @Override
        public void run() {
            long start = System.currentTimeMillis();
            try {
                raf = new RandomAccessFile(path,"rw");
                raf.seek(0);
                long contentLen = new File(path).length();
                long times = contentLen / bufLen +1;
                byte []buff = new byte[bufLen];
                int hasRead = 0;
                String result = null;
                for(int i=0;i<times;i++){
                    hasRead = raf.read(buff);
                    if(hasRead < 0){
                        break;
                    }
                    result = new String(buff,"gb2312");
                }
                doneSignal.countDown();
            } catch (IOException e) {
                e.printStackTrace();
            }
            long end = System.currentTimeMillis();
            System.out.println(getName() + " " + path +" total Time: " + (end - start));
        }
    }
    

    程序部分说明:
    分别创建4个线程,读取四个不同大小的文件。
    分别计算读取每个文件的时间,然后得到读取4个文件的总时间。

    java.util.concurrent.CountDownLatch 
    一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
    
    await()使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断。
    
    countDown()递减锁存器的计数,如果计数到达零,则释放所有等待的线程。
    
    线程执行完读取文件的操作,然后锁存器减一,当4个线程都执行读取文件的操作后,锁存器计数为0,执行await方法后,输出总的读取时间。
    加入CountDownLatch 是为了让子线程分别读取完文件后,主线程才能把总的读取时间输出。否则会造成主线程一早就计算时间。
    

    运行结果:

    Thread-8 C:\Users\IBM_ADMIN\Downloads\carootcert(1).der total Time: 8
    Thread-5 C:\Users\IBM_ADMIN\Downloads\马达加斯加3全篇英文台词.txt total Time: 28
    Thread-6 C:\Users\IBM_ADMIN\Downloads\马达加斯加3全篇英文台词2.txt total Time: 4051
    Thread-7 C:\Users\IBM_ADMIN\Downloads\马达加斯加3全篇英文台词3.txt total Time: 5190
    ===============================
    The totally executed time: 5194

    从结果可以看出,总的运行时间接近那个读取最大文件所用的时间。

    ===================================

    不用线程读取多个文件

    package thread;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    
    public class ReadMultiFilesWithoutThread {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            long startTime = System.currentTimeMillis();
    
            ReadMultiFilesWithoutThread read = new ReadMultiFilesWithoutThread();
    
            final String filePath3 = "C:\\Users\\IBM_ADMIN\\Downloads\\马达加斯加3全篇英文台词3.txt"; //266M
            final String filePath2 = "C:\\Users\\IBM_ADMIN\\Downloads\\马达加斯加3全篇英文台词2.txt"; //186M
            final String filePath = "C:\\Users\\IBM_ADMIN\\Downloads\\马达加斯加3全篇英文台词.txt"; //39KB
            final String filePath4 = "C:\\Users\\IBM_ADMIN\\Downloads\\carootcert(1).der"; //1KB
    
            read.readFile(filePath);
            read.readFile(filePath2);
            read.readFile(filePath3);
            read.readFile(filePath4);
    
            long endTime = System.currentTimeMillis();
            System.out.println("===============================");
            System.out.println("The totally executed time: "+(endTime-startTime));
        }
    
        public void readFile(String path){
            long start = System.currentTimeMillis();
            int bufLen = 256;
            try {
                RandomAccessFile raf = new RandomAccessFile(path,"rw");
                raf.seek(0);
                long contentLen = new File(path).length();
                long times = contentLen / bufLen +1;
                byte []buff = new byte[bufLen];
                int hasRead = 0;
                String result = null;
                for(int i=0;i<times;i++){
                    hasRead = raf.read(buff);
                    if(hasRead < 0){
                        break;
                    }
                    result = new String(buff,"gb2312");
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            long end = System.currentTimeMillis();
            System.out.println( path +" total Time: " + (end - start));
        }
    }
    
    

    程序部分说明:
    分别读取4个大小不同的文件,计算读取每个文件所需的时间。
    计算总共的时间。

    运行结果:

    :\Users\IBM_ADMIN\Downloads\马达加斯加3全篇英文台词.txt total Time: 17
    C:\Users\IBM_ADMIN\Downloads\马达加斯加3全篇英文台词2.txt total Time: 2983
    C:\Users\IBM_ADMIN\Downloads\马达加斯加3全篇英文台词3.txt total Time: 3794
    C:\Users\IBM_ADMIN\Downloads\carootcert(1).der total Time: 1
    ===============================
    The totally executed time: 6795
    

    从结果可以看出,总的运行时间接近所有读取所有文件的时间总和。

    展开全文
  • 在springmvc中 通常需要用java代码读取resource资源文件中的properties配置文件,我的办法将支持同时读取多个文件. import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io....

    在springmvc中 通常需要用java代码读取resource资源文件中的properties配置文件,我的办法将支持同时读取多个文件.

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    
    
    public class PropertyUtil {
        private static final Logger logger = LoggerFactory.getLogger(PropertyUtil.class);
        private static Properties props;
        private static Properties redisProps;
        private static Properties commonProps;
        private static String name;
    
        synchronized static private void loadProps(String fileName){
            logger.info("开始加载properties文件内容.......");
            logger.info(fileName);
            props = new Properties();
            InputStream in = null;
            try {
                //第一种,通过类加载器进行获取properties文件流
                in = PropertyUtil.class.getClassLoader().getResourceAsStream(fileName);
                //第二种,通过类进行获取properties文件流
                //in = PropertyUtil.class.getResourceAsStream("/jdbc.properties");
                props.load(in);
            } catch (FileNotFoundException e) {
                logger.error(fileName+"文件未找到");
            } catch (IOException e) {
                logger.error("出现IOException");
            } finally {
                try {
                    if(null != in) {
                        in.close();
                    }
                } catch (IOException e) {
                    logger.error("jdbc.properties文件流关闭出现异常");
                }
            }
            logger.info("加载properties文件内容完成...........");
            logger.info("properties文件内容:" + props);
        }
    
    
        public static String getProperty(String fileName,String key){
            if(null == props) {
                loadProps(fileName);
            }
            return props.getProperty(key);
        }
    
        public static String getProperty(String fileName,String key, String defaultValue) {
            if(null == props) {
                loadProps(fileName);
            }
            return props.getProperty(key, defaultValue);
        }
    
        public static Properties getAll(String fileName){
            logger.info("文件名:"+fileName);
            logger.info("props:"+props);
            if(null == props){
                loadProps(fileName);
            }else{
                if(!props.propertyNames().equals(fileName)){ //这一步是为了判断再次读取的时候是否是相同文件
                    loadProps(fileName);
                }
            }
    
            return props;
        }
    }
    


    展开全文
  • Java读取多个csv文件中的指定数据

    千次阅读 2019-05-28 23:10:26
    pixel数据形成了304csv文件,提取特定行列的数据整理为单独数列,为了避免手动输入很次,用Java进行了下尝试。 import java.io.BufferedReader; import java.io.FileReader; public class Text { //...
  • java多线程读取多个文件 导入数据库

    万次阅读 2016-10-14 16:59:21
    多个线程读文件和单个线程读文件,效率差不多,甚至可能不如单线程,原因如下:如果只是单纯的读文件,一个线程足够了,因为一般瓶颈是在磁盘io上,多个线程只会在磁盘io上阻塞。因为不同文件的读写,会造成磁头的...
  • java读取多个spring 配置文件

    千次阅读 2012-07-01 01:08:55
    我们可以通过 ...类的构造方法 ...读取文件时,只需读取 applicationContext-map.xml 文件即可,如下: BeanFactory bf = new ClassPathXmlApplicationContext(“appliicationContext-*.xml”);
  • java 读取文件文本内容There are many ways to read a text file in java. Let’s look at java read text file different ... 让我们一一看一下Java读取文本文件的不同方法。 Java读取文本文件 (Java read text...
  • 读取一个文件夹中的多个txt文件 @Override public void readFile(String path) throws IOException { String path1 = "C:\\Users\\Admin\\Desktop\\java\\stock-center\\OemData\\SH"; File file = new File...
  • java读取文件

    千次阅读 2016-12-29 15:56:51
    java读取文件 以字节为单位读取文件 以字符为单位读取文件 以行为单位读取文件 随机读取文件内容 ReadFromFile.javapackage cn.zhisheng.io;import java.io.*;/** * java读取文件 * Created by 10412 on 2016/12/...
  • Java读取文件

    千次阅读 2018-08-20 20:51:47
    Java读取文件 Question:使用Java如何读取大文件? Answer:我们平常读取一般文件都是将文件数据直接全部读取到内存中进行操作的,这种做法对于小文件是没有问题的,但对于稍大一些的文件就会抛出 OOM 异常,...
  • 最近有需求是做数据导入的接口,对方入到进来若干excel文档,每个文档对应数据库中不同表的内容。数据格式:INFO文件中存放若10张excel文档文档名称格式为表名-描述(如user-用户表.xls)。 下面将这过程...
  • 直接上代码:
  • 今天遇到一个问题,需要多个线程读取同一个文件的不同位置,提高效率,写代码验证了一下,把结果记录下来。 首先我们写个文件,然后多线程读取,以下是我实验的代码:package com.alibaba.middleware.race;import ...
  • 一个目录里边有 47W个文件,现在需要根据一个文本文件里边的文件名称 在47W个文件中取出24W个有效文件(根据文本文件里边的文件名取) 二、设计思路 1、使用 BufferedReader逐行读取文本文件,并存入LinkList ...
  • Java读取多层级xml文件

    万次阅读 多人点赞 2016-12-05 19:17:07
    最近在做国际客服北京职场的项目,需要提供一接口...在将返回报文(xml)解析为Map输出时遇到一难点:Java对于层级xml的解析。现以一客户资料查询接口为例将解析过程记录如下: 返回xml报文的简化形式:
  • Java读取批量Excel文件

    千次阅读 2020-04-29 16:38:23
    Java读取批量Excel文件,并转化为List<Map<String,String>> 1.首先基础知识: 一 :简介 开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两框架,一是...
  • java读取文件到字符串Sometimes while working with files, we need to read the file to String in Java. Today we will look into various ways to read the file to String in Java. 有时在处理文件时,我们需要...
  • java多线程读取个文件

    千次阅读 2015-08-07 17:19:18
    import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.util.concurrent.CountDownLatch;public class ReadFileBy
  • } public static void main(String args[]) throws IOException { //读取文件内容 String content=null; content = readFileContent("E://1.txt"); System.out.println("content:"+content); writetoFile(content);...
  • Java读取word文档

    千次阅读 2017-04-07 15:21:49
    读取word文档
  • java读取路径下的所有文件

    万次阅读 2017-09-20 14:22:44
    最近使用ssh框架的时候需要把后缀为.hbm.xml的文件配置进spring的配置文件,但是由于这样以.hbm.xml结尾的文件,不可能一去写,于是我便尝试使用java去自动生成。
  • Java高效读取文件

    千次阅读 2017-11-28 23:27:04
    java读取文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 619,904
精华内容 247,961
关键字:

java读取多个文件

java 订阅