当前位置: 首页 > news >正文

南昌网站建设优化公司排名微网站模板建设

南昌网站建设优化公司排名,微网站模板建设,湖南专业做网站公司排名,知名网站设计服务商1.概述 在这篇文章里#xff0c; 我们将探索不同的方式从文件中读取数据。 首先#xff0c; 学习通过标准的的Java类#xff0c;从classpath、URL或者Jar中加载文件。 然后#xff0c;学习通用BufferedReader, Scanner, StreamTokenizer, DataInputStream, SequenceInput…1.概述 在这篇文章里 我们将探索不同的方式从文件中读取数据。 首先 学习通过标准的的Java类从classpath、URL或者Jar中加载文件。 然后学习通用BufferedReader, Scanner, StreamTokenizer, DataInputStream, SequenceInputStream, FileChannel读取文件内容。也会讨论如何读取UTF-8编码的文件。 最后学习Java7和Java8中新的加载和读取文件的技术。 2.准备 2.1 输入文件 这篇文章的很多示例从名为fileTest.txt的文件读取文本内容文件包含 Hello,World! 有少量示例 我们会读取不同的文件 示例中会有说明。 2.2 辅助方法 很多示例都会用到共用的方法readFromInputStream 该方法将InputStream转化String private String readFromInputStream(InputStream inputStream)throws IOException {StringBuilder resultStringBuilder new StringBuilder();try (BufferedReader br new BufferedReader(new InputStreamReader(inputStream))) {String line;while ((line br.readLine()) ! null) {resultStringBuilder.append(line).append(\n);}}return resultStringBuilder.toString();}  3.从Classpath读取文件 3.1 使用标准Java 从src/main/resources读取文件fileTest.txt Testpublic void test() throws IOException {String expectedData Hello,World!;ClassReadFileTest clazz ReadFileTest.class;InputStream inputStream clazz.getResourceAsStream(/fileTest.txt);String data readFromInputStream(inputStream);Assert.assertThat(data, containsString(expectedData));} 在上面的代码中我们通过当前类的getResourceAsStream方法加载文件入参是绝对路径。 ClassLoader中相同的方法也可以使用。 ClassLoader classLoader getClass().getClassLoader(); InputStream inputStream classLoader.getResourceAsStream(fileTest.txt); String data readFromInputStream(inputStream); 这两种方法的主要区别是 当前类的ClassLoader的getResourceAsStream方法入参路径是从classpath开始。 而类实例的入参是相对于包路径但路径开始使用/符号 也是绝对路径。 特别要注意的是 文件打开读取完数据后 始终需要关闭 inputStream.close(); 3.2 使用commons-io库 另一个比较常用的方法是使用commons-io包里的FileUtils.readFileToString方法。 dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion1.4/version/dependencyTestpublic void useCommonIO() throws IOException {String expectedData Hello,World!;ClassLoader classLoader getClass().getClassLoader();File file new File(classLoader.getResource(fileTest.txt).getFile());String data FileUtils.readFileToString(file, UTF-8);assertEquals(expectedData, data.trim());} 该方法入参是File对象。这个工具类的优点是不用编码InputStream实例的相关代码。 这个库还提供了IOUtils类。 Testpublic void useCommonIO2() throws IOException {String expectedData Hello,World!;FileInputStream fis new FileInputStream(src/test/resources/fileTest.txt);String data IOUtils.toString(fis, UTF-8);assertEquals(expectedData, data.trim());} 4.BufferedReader Test public void bufferedReader() throws IOException {String expected_value Hello,World!;String file src/test/resources/fileTest.txt;BufferedReader reader new BufferedReader(new FileReader(file));String currentLine reader.readLine();reader.close();assertEquals(expected_value, currentLine); } 当读取结束的时候 reader.readLine()会返回null 5.Java NIO NIO是在JDK7中添加。 5.1读取小文件 首先看一下关于Files.readAllLines的示例 Testpublic void readSmallFile()  throws IOException {String expected_value Hello,World!;Path path Paths.get(src/test/resources/fileTest.txt);String read Files.readAllLines(path).get(0);assertEquals(expected_value, read);} 入参Path对象Path可以认为是java.io.File的升级版本提供一些额外的功能。 如果读取的是二进制文件可以使用Files.readAllBytes()方法 5.2读取大文件 如果想要读取大文件 我们可以使用Files类和BufferedReader类。 Testpublic void readLargeFile() throws IOException {String expected_value Hello,World!;Path path Paths.get(src/test/resources/fileTest.txt);BufferedReader reader Files.newBufferedReader(path);String line reader.readLine();assertEquals(expected_value, line);} 5.3Files.lines 在JDK8中Files类增加了lines方法这个方法将返回StreamString。跟文件操作一样Stream需要显式调用的close()。Files API提供了很多简单读取文件的方法。 6.Scanner 下面我们将使用Scanner读取文件使用逗号(,)作为定界符(delimiter)。 Test public void whenReadWithScanner_thenCorrect()throws IOException {String file src/test/resources/fileTest.txt;Scanner scanner new Scanner(new File(file));scanner.useDelimiter(,);assertTrue(scanner.hasNext());assertEquals(Hello, scanner.next());assertEquals(World!, scanner.next());scanner.close(); } Scanner默认的定界符是空格。它适用于从控制台读取输入或者内容有固定定界符的内容时。 7.StreamTokenizer tokenizer会指出下一个token的类型String或Number。 tokenizer.nval - 如果类型为Number时读取该字段 tokenizer.sval - 如果类型为String时读取该字段 Test public void readWithTokenize()throws IOException {String file src/test/resources/fileTestTokenizer.txt;FileReader reader new FileReader(file);StreamTokenizer tokenizer new StreamTokenizer(reader);//  1tokenizer.nextToken();assertEquals(StreamTokenizer.TT_WORD, tokenizer.ttype);assertEquals(Hello, tokenizer.sval);//  2tokenizer.nextToken();assertEquals(StreamTokenizer.TT_NUMBER, tokenizer.ttype);assertEquals(1, tokenizer.nval, 0.0000001);//  3tokenizer.nextToken();assertEquals(StreamTokenizer.TT_EOF, tokenizer.ttype);reader.close(); } 8.DataInputStream 如果要读取二进制文件或者原生数据可以使用DataInputStream Test public void whenReadWithDataInputStream() throws IOException {String expectedValue Hello,World!;String file src/test/resources/fileTest.txt;String result null;DataInputStream reader new DataInputStream(new FileInputStream(file));int nBytesToRead reader.available();if(nBytesToRead 0) {byte[] bytes new byte[nBytesToRead];reader.read(bytes);result new String(bytes);}assertEquals(expectedValue, result); }package com.pl;import java.io.DataInputStream; import java.io.FileInputStream; import java.io.IOException;public class ccs_2 {public static void main(String[] args) throws IOException {String expectedValue ;String file C:\\Users\\Administrator\\Desktop\\1.txt;//result null;DataInputStream reader new DataInputStream(new FileInputStream(file));int nBytesToRead reader.available();if (nBytesToRead 0) {byte[] bytes new byte[nBytesToRead];reader.read(bytes);expectedValue new String(bytes);}System.out.printf(\n expectedValue);} } 9.FileChannel 如果读取的是一个大文件FileChannel速度会超过standard IO。 Test public void whenReadWithFileChannel()throws IOException {String expected_value Hello,World!;String file src/test/resources/fileTest.txt;RandomAccessFile reader new RandomAccessFile(file, r);FileChannel channel reader.getChannel();int bufferSize 1024;if (bufferSize channel.size()) {bufferSize (int) channel.size();}ByteBuffer buff ByteBuffer.allocate(bufferSize);channel.read(buff);buff.flip();assertEquals(expected_value, new String(buff.array()));channel.close();reader.close(); }package com.pl;import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel;public class ccs_2 {public static void main(String[] args) throws IOException {//throws IOException {String expected_value ;String file C:\\Users\\Administrator\\Desktop\\1.txt;RandomAccessFile reader new RandomAccessFile(file, r);FileChannel channel reader.getChannel();int bufferSize 1024;if (bufferSize channel.size()) {bufferSize (int) channel.size();}//}ByteBuffer buff ByteBuffer.allocate(bufferSize);channel.read(buff);buff.flip();expected_value new String(buff.array());//assertEquals(expected_value, new String(buff.array()));channel.close();reader.close();System.out.printf(\n expected_value);} }10.读取utf-8编码的文件   Test public void whenReadUTFEncodedFile()throws IOException {String expected_value 你好世界;String file src/test/resources/fileTestUtf8.txt;BufferedReader reader new BufferedReader(new InputStreamReader(new FileInputStream(file), UTF-8));String currentLine reader.readLine();reader.close();assertEquals(expected_value, currentLine); }package com.pl;import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader;public class ccs_2 {public static void main(String[] args) throws IOException { // File file new File(C:\\Program Files); // // //System.out.println(file.list()); // String[] A file.list(); // for (int i 0; i A.length; i) { // System.out.printf(\n A[i]); // }String expected_value 你好世界;String file C:\\Users\\Administrator\\Desktop\\1.txt;BufferedReader reader new BufferedReader(new InputStreamReader(new FileInputStream(file), UTF-8));String currentLine reader.readLine();reader.close();System.out.printf(\n currentLine);} }11.从URL读取数据 Test public void readFromURL() throws IOException {URL urlObject new URL(https://www.baidu.com);URLConnection urlConnection urlObject.openConnection();InputStream inputStream urlConnection.getInputStream();String data readFromInputStream(inputStream); } 12.从jar包中读取文件 我们的目标是读取junit-4.12.jar包中的LICENSE-junit.txt文件。clazz只需要这个Jar中的类就行。 Test public void readFromJar() throws IOException {String expectedData Eclipse Public License;Class clazz Test.class;InputStream inputStream clazz.getResourceAsStream(/LICENSE-junit.txt);String data readFromInputStream(inputStream);Assert.assertThat(data, containsString(expectedData)); }
http://www.hkea.cn/news/14342425/

相关文章:

  • 南京手机网站设计专业教育网站模板下载
  • 苏州国内网站建设公司电子商务网站建设与管理期末答案
  • 用vs2012做网站案例广东哪家网站建设后台管理便捷
  • 计算机专业论文网站开发哪个软件可以自动排名
  • 网站开发英语词汇网络公司做的网站
  • 做网站在自己电脑建立虚拟机营销型企业网站的功能
  • 网站建设公司价格营销型网站建设调查表
  • 如何设置免费网站2012服务器做网站
  • 手机上如何制作app网站的优化策略方案
  • 网站建设零基础自学视频教程开个人网站如何赚钱
  • 伍佰亿门户网站类似wordpress的cms
  • 社保官方网站登录入口自己在家做网站
  • 自己建立网站用什么软件昆明网站设计报价
  • 网站想换一个空间怎么办网上教育培训机构排名
  • html企业网站怎么做优惠券购物网站怎么做
  • 申请免费个人网站网站美化模板
  • 网站设计 方案wordpress缓冲
  • 学做投资网站好徐州新沂网站建设
  • 学校网站素材游戏开发工程师月薪
  • 隆尧做网站广宁县住房和城乡建设局网站
  • 临沂网站搜索排名移动终端网站开发
  • 中国容桂营销网站建设利于优化的网站要备案吗
  • 国外的网站模板类网站电子商务网站建设项目规划书
  • 新开传奇网站999广州市 网站建设建设
  • 网站备案安全责任书是谁盖章湖南长沙新增病例最新消息
  • 网站建 设方案说明书商务网站建设摘要
  • 做网站订房网站长沙seo网络公司
  • 洛阳制作网站哪家好微信小程序订货系统
  • 福安城乡建设与规划局网站学网站建设要多久
  • 做venn图的网站如何开网站卖东西