Ⅰ 用java如何读取一个文件的指定字节位置的数据
可以使用RandomAccessFile类。例如要从100字节开始输出工作目录下的.txt文件的类容。package konw.test1;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;public class Test1{ public static void main(String[] args) { long pos = 100; try { String str = ""; RandomAccessFile randomAccessFile = new RandomAccessFile("data.txt", "rw"); randomAccessFile.seek(pos);//将文件流的位置移动到pos字节处 while( (str = randomAccessFile.readLine()) != null) { System.out.println(str); } randomAccessFile.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}
Ⅱ java鎬庝箞鐢ㄦ祦璇诲彇涓涓鏂囦欢鐨勫唴瀹圭劧鍚庢坊鍔犲埌鍒鐨勬枃浠朵腑锛
FileInputStream fis = new FileInputStream(“d:/a.txt”);//浠巃.txt涓璇诲嚭x0dx0aFileOutputStream fos = new FileOutputStream(“d:/b.txt”);//鍐欐ā鏁e埌鏃﹀甫姘忚岃獕b.txt涓鍘籠x0dx0aBufferedReader reader = new BufferedReader(new InputStreamReader(fis));x0dx0aBufferedWriter write = new BufferedWriter(new OutputStreamWriter(fos));x0dx0aString temp;x0dx0awhile((temp = reader.readLine())!= null){//涓娆¤讳竴琛孿x0dx0awrite.write(temp);x0dx0a}x0dx0areader.close();x0dx0awrite.close();
Ⅲ JAVA中读取文件(二进制,字符)内容的几种方
JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代码,需要的可以直接复制使用public class ReadFromFile {/*** 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。*/public static void readFileByBytes(String fileName) {File file = new File(fileName);InputStream in = null;try {System.out.println("以字节为单位读取文件内容,一次读一个字节:");// 一次读一个字节in = new FileInputStream(file);int tempbyte;while ((tempbyte = in.read()) != -1) {System.out.write(tempbyte);}in.close();} catch (IOException e) {e.printStackTrace();return;}try {System.out.println("以字节为单位读取文件内容,一次读多个字节:");// 一次读多个字节byte[] tempbytes = new byte[100];int byteread = 0;in = new FileInputStream(fileName);ReadFromFile.showAvailableBytes(in);// 读入多个字节到字节数组中,byteread为一次读入的字节数while ((byteread = in.read(tempbytes)) != -1) {System.out.write(tempbytes, 0, byteread);}} catch (Exception e1) {e1.printStackTrace();} finally {if (in != null) {try {in.close();} catch (IOException e1) {}}}}/*** 以字符为单位读取文件,常用于读文本,数字等类型的文件*/public static void readFileByChars(String fileName) {File file = new File(fileName);Reader reader = null;try {System.out.println("以字符为单位读取文件内容,一次读一个字节:");// 一次读一个字符reader = new InputStreamReader(new FileInputStream(file));int tempchar;while ((tempchar = reader.read()) != -1) {// 对于windows下,\r\n这两个字符在一起时,表示一个换行。// 但如果这两个字符分开显示时,会换两次行。// 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。if (((char) tempchar) != '\r') {System.out.print((char) tempchar);}}reader.close();} catch (Exception e) {e.printStackTrace();}try {System.out.println("以字符为单位读取文件内容,一次读多个字节:");// 一次读多个字符char[] tempchars = new char[30];int charread = 0;reader = new InputStreamReader(new FileInputStream(fileName));// 读入多个字符到字符数组中,charread为一次读取字符数while ((charread = reader.read(tempchars)) != -1) {// 同样屏蔽掉\r不显示if ((charread == tempchars.length)&& (tempchars[tempchars.length – 1] != '\r')) {System.out.print(tempchars);} else {for (int i = 0; i < charread; i++) {if (tempchars[i] == '\r') {continue;} else {System.out.print(tempchars[i]);}}}}} catch (Exception e1) {e1.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {}}}}/*** 以行为单位读取文件,常用于读面向行的格式化文件*/public static void readFileByLines(String fileName) {File file = new File(fileName);BufferedReader reader = null;try {System.out.println("以行为单位读取文件内容,一次读一整行:");reader = new BufferedReader(new FileReader(file));String tempString = null;int line = 1;// 一次读入一行,直到读入null为文件结束while ((tempString = reader.readLine()) != null) {// 显示行号System.out.println("line " + line + ": " + tempString);line++;}reader.close();} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {}}}}/*** 随机读取文件内容*/public static void readFileByRandomAccess(String fileName) {RandomAccessFile randomFile = null;try {System.out.println("随机读取一段文件内容:");// 打开一个随机访问文件流,按只读方式randomFile = new RandomAccessFile(fileName, "r");// 文件长度,字节数long fileLength = randomFile.length();// 读文件的起始位置int beginIndex = (fileLength > 4) ? 4 : 0;// 将读文件的开始位置移到beginIndex位置。randomFile.seek(beginIndex);byte[] bytes = new byte[10];int byteread = 0;// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。// 将一次读取的字节数赋给bytereadwhile ((byteread = randomFile.read(bytes)) != -1) {System.out.write(bytes, 0, byteread);}} catch (IOException e) {e.printStackTrace();} finally {if (randomFile != null) {try {randomFile.close();} catch (IOException e1) {}}}}/*** 显示输入流中还剩的字节数*/private static void showAvailableBytes(InputStream in) {try {System.out.println("当前字节输入流中的字节数为:" + in.available());} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {String fileName = "C:/temp/newTemp.txt";ReadFromFile.readFileByBytes(fileName);ReadFromFile.readFileByChars(fileName);ReadFromFile.readFileByLines(fileName);ReadFromFile.readFileByRandomAccess(fileName);}}
Ⅳ Java 怎样从文件中读取特定的内容,比如从第一个换行读取到第二个换行。求代码
C盘下新建1.txt
Ⅳ 怎样用java代码实现打开指定的文件并显示文件中的内容
这个用到流了啊 输入流 ———》字符流定义格式——》缓冲流 你应该懂得
Ⅵ 用java 如何读取配置文件(如:资源文件)中配
java读取配置文件的几种方法如下:方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。因为是用ServletContext读取文件路径,所以配置文件可以放入在web-info的classes目录中,也可以在应用层级及web-info的目录中。文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在web-info及webroot下面等。因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xml和properties。缺点:不能在servlet外面应用读取配置信息。方式二:采用ResourceBundle类读取配置信息,优点是:可以以完全限定类名的方式加载资源后,直接的读取出来,且可以在非Web应用中读取资源文件。缺点:只能加载类classes下面的资源文件且只能读取.properties文件。方式三:采用ClassLoader方式进行读取配置信息优点是:可以在非Web应用中读取配置资源信息,可以读取任意的资源文件信息缺点:只能加载类classes下面的资源文件。方法4 getResouceAsStreamXmlParserHandler.class.getResourceAsStream 与classloader不同使用的是当前类的相对路径
Ⅶ 我想用java来读取Excel文件的某行某列,就是指定读取某个位置的数据,然后显示出来!怎么弄求
工作中用到的导入excel一个方法,你还可以通过一些插件导入,代码要你自己了,基本原理如下…public Object importDoucument(MultipartFile uploadfile) { StringBuffer resultMessage = new StringBuffer(); ExcelImport excelImport = new ExcelImport(); Sheet sheet = null; try { // 验证文件格式 如不出错 返回工作簿 excelImport.verifyExeclFile(uploadfile); ExcelBean excelBean = excelImport.getExcelBean(); if (null != excelBean) { sheet = excelBean.getSheet(); } //导入excel文件分析整理出list对象 List<StcCoreElements> dataList = getAssessCateRange(sheet, "战略要素名称", "战略要素名称", 2, 1); int num = 0; if(dataList.size()>0){ for (StcCoreElements itemStcVO : dataList) { StcCoreElements stcCoreElementsVo = nitemStcVO //*****修改些处 this.save(stcCoreElementsVo); ++num; } } resultMessage.append("已成功导入 "+num+" 条核心要素信息"); } catch (Exception e) { resultMessage.append(e.getMessage()); e.printStackTrace(); } finally { excelImport.close(); } return resultMessage; }private List<StcCoreElements> getAssessCateRange(Sheet sheet, String startName, String endName, int rowNum, int titleRowNum) { int[] cateRange = new int[2]; List<StcCoreElements> dataList = new ArrayList<StcCoreElements>(); int lastRowNumber = sheet.getLastRowNum(); Row cateRow = sheet.getRow(rowNum – 1); Cell cateCell = cateRow.getCell(0); String cateCellValue = ImportExcelUtil.getCellValue(cateCell, sheet); if (StringUtils.isNotBlank(cateCellValue)) { if (StringUtils.startsWith(cateCellValue, startName)) { cateRange[0] = rowNum + titleRowNum; } } String currentCellValue0 = ""; do { Row currentRow = sheet.getRow(rowNum); StcCoreElements info =new StcCoreElements(); Cell currentCell0 = currentRow.getCell(0); currentCellValue0 = ImportExcelUtil.getCellValue(currentCell0, sheet); info.setOverallPlan(currentCellValue0); dataList.add(info); rowNum++; } while (rowNum <= lastRowNumber); return dataList; }