『壹』 java 按行读取一个文件,存在字符串数组里,一个元素对应一行,再将这个数组按行输出到一个新的文件里
java 按行读取一个文件,存在字符串数组里,一个元素对应一行,再将这个数组按行输出到一个新的文件里,代码如下:
packagefoo;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.OutputStreamWriter;importjava.util.ArrayList;importjava.util.List;/***Helloworld!**/publicclassApp{publicstaticvoidmain(String[]args){FilereadFile=newFile("D://home/a.txt");InputStreamin=null;InputStreamReaderir=null;BufferedReaderbr=null;OutputStreamout=null;OutputStreamWriterow=null;BufferedWriterbw=null;try{//用流读取文件in=newBufferedInputStream(newFileInputStream(readFile));//如果你文件已utf-8编码的就按这个编码来读取,不然又中文会读取到乱码ir=newInputStreamReader(in,"utf-8");br=newBufferedReader(ir);Stringline="";//定义集合一行一行存放List<String>list=newArrayList<String>();//一行一行读取while((line=br.readLine())!=null){System.out.println(line);list.add(line);}//将集合转换成数组String[]arr=list.toArray(newString[list.size()]);//写入新文件FilenewFile=newFile("D://home/b.txt");if(!newFile.exists()){newFile.createNewFile();}out=newBufferedOutputStream(newFileOutputStream(newFile));//这里也可以给定编码写入新文件ow=newOutputStreamWriter(out,"gb2312");bw=newBufferedWriter(ow);//遍历数组吧字符串写入新文件中for(intx=0;x<arr.length;x++){bw.write(arr[x]);if(x!=arr.length-1){//换行bw.newLine();}}//刷新该流的缓冲,这样才真正写入完整到新文件中bw.flush();}catch(Exceptione){e.printStackTrace();}finally{//一定要关闭流,倒序关闭try{if(bw!=null){bw.close();}if(ow!=null){ow.close();}if(out!=null){out.close();}if(br!=null){br.close();}if(ir!=null){ir.close();}if(in!=null){in.close();}}catch(Exceptione2){}}}}
『贰』 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编程:读文件,按行输出文件内容
其实你贴的代码并没有问题
『肆』 “java”中多线程按行读取txt且每个线程读的内容不能重复,这么求“demo”
你把原来程序中直接读的地方,改成调用上面的函数,由该函数统一读行。这样,不管是你有 N 个线程,还是一个线程,都不会发生读的行重复,或者读的行不完整的现象了。
为了充分利用多线程读取,就需要把文件划分成多个区域,供每个线程读取。那么就需要有一个算法来计算出每个线程读取的开始位置和结束位置。那么首先根据配置的线程数和文件的总长度计,算出每个线程平均分配的读取长度。
但是有一点,由于文件是纯文本文件,必须按行来处理,如果分割点在某一行中间,那么这一行数据就会被分成两部分,分别由两个线程同时处理,这种情况是不能出现的。所以各个区域的结束点上的字符必须是换行符。第一个区域的开始位置是0,结束位置首先设为(文件长度/线程数),如果结束点位置不是换行符,就只能加1,直到是换行符位置。
『伍』 java 按行读取txt文件的数字
package test;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class Test { public static double[] writeToDat(String path) { File file = new File(path); List list = new ArrayList(); double[] nums = null; try { BufferedReader bw = new BufferedReader(new FileReader(file)); String line = null; //因为不知道有几行数据,所以先存入list集合中 while((line = bw.readLine()) != null){ list.add(line); } bw.close(); } catch (IOException e) { e.printStackTrace(); } //确定数组长度 nums = new double[list.size()]; for(int i=0;i<list.size();i++){ String s = (String) list.get(i); nums[i] = Double.parseDouble(s); } return nums; } public static void main(String[] args) { String path = "d:/file4.txt"; double[] nums = writeToDat(path); for(int i=0;i<nums.length;i++){ System.out.println(nums[i]); } }}
『陆』 java 读文件用什么 (按行读)
二楼的显然不是在按行读文件,很明显是按照自己读文件的public String BufferedReaderDemo(String path) throws IOException…{File file=new File(path);if(!file.exists()||file.isDirectory())throw new FileNotFoundException();BufferedReader br=new BufferedReader(new FileReader(file));String temp=null;StringBuffer sb=new StringBuffer();temp=br.readLine();while(temp!=null)…{sb.append(temp+" ");temp=br.readLine();}return sb.toString();} 上面的例子就是按照行读取文件的操作
『柒』 java怎么读入文件,并逐行输出
java读入文件,并逐行输出,先在D://home建立个文件夹,然后创建一个a.txt文件,然后编辑文件,文本编辑的编码是utf-8,然后用流逐行读取输出,如下:
importjava.io.BufferedInputStream;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;importjava.io.InputStreamReader;publicclassTestC{publicstaticvoidmain(String[]args){//获取要读取的文件FilereadFile=newFile("D://home/a.txt");//输入IO流声明InputStreamin=null;InputStreamReaderir=null;BufferedReaderbr=null;try{//用流读取文件in=newBufferedInputStream(newFileInputStream(readFile));//如果你文件已utf-8编码的就按这个编码来读取,不然又中文会读取到乱码ir=newInputStreamReader(in,"utf-8");//字符输入流中读取文本,这样可以一行一行读取br=newBufferedReader(ir);Stringline="";//一行一行读取while((line=br.readLine())!=null){System.out.println(line);}}catch(Exceptione){e.printStackTrace();}finally{//一定要关闭流,倒序关闭try{if(br!=null){br.close();}if(ir!=null){ir.close();}if(in!=null){in.close();}}catch(Exceptione2){}}}}结果:helloworld您好123456
『捌』 JAVA如何按行数读取txt 比如我要读第10行到第100行 或者第1000行 到 第1200 行
用LineNumberReader行号读取器FileReader f=new FileReader("test.txt");LineNumberReader l=new LineNumberReader(f);l.setLineNumber(10); //跳到第10行for(int i=10;i<=100;i++){ System.out.println( l.readLine()); //显示第10-100行}l.close();f.close();
『玖』 java文件如何读取
有几种方法读取吧File file = new File("d:\\a.txt");//把D盘目录下的a.txt读取出来,InputStream is = new FileInputStream(file);//把文件以字节流读回到内存中第二种是类加答载Demo1.class.getClassLoader().getResourceAsStream("a.txt");//Demo1为当前类名,a.txt在与Demo1.class在同一目录下。还有其它的就不说了
『拾』 如何用java按行读取文本文件
File file = new File("文件地址");Scanner scanner = new Scanner(file);String lineContent = null;while(scanner.hasNextLine()){//如果有下一行 lineContent = scanner.nextLine();//读取下一行内容}scanner.close();//关闭Scanner
未经允许不得转载:山九号 » java按行读取文件内容|java 按行读取txt文件的数字