导航:首页 > 文件教程 > java中部分读取文件

java中部分读取文件

发布时间:2021-12-03 23:55:42

java如何实现读一个文件(非文本文件)后输出其中自己指定的一部分

importjava.io.BufferedReader;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.LineNumberReader;
importjava.util.Scanner;
/**
*读取文件指定行数内容
*@authoryoung
*
*/
publicclassReadSelectedLine{
staticvoidreadLineVarFile(StringfileName,intlineNumber)
throwsIOException{
BufferedReaderreader=newBufferedReader(newInputStreamReader(
newFileInputStream(fileName)));
Stringline=reader.readLine().toString();
if(lineNumber<0||lineNumber>getTotalLines(fileName)){
System.out.println("不在文件的行数范围之内。");
}
intnum=0;
while(line!=null){
if(lineNumber==++num){
System.out.println("line"+lineNumber+":"+line);
}
line=reader.readLine();
}
reader.close();
}

//文件内容的总行数。
staticintgetTotalLines(StringfileName)throwsIOException{
BufferedReaderin=newBufferedReader(newInputStreamReader(
newFileInputStream(fileName)));
LineNumberReaderreader=newLineNumberReader(in);
Strings=reader.readLine();
intlines=0;
while(s!=null){
lines++;
s=reader.readLine();
}
reader.close();
in.close();
returnlines;
}
publicstaticvoidmain(String[]args)throwsIOException{

//读取文件
StringfileName="c:\1.java";

//获取文件的内容的总行数
inttotalNo=getTotalLines(fileName);
System.out.println("Thereare"+totalNo+"linesinthetext!");

//指定读取的行号,此处也可以改成自由输入
System.out.println("输出文件第几行内容?");
intlineNumber=newScanner(System.in).nextInt();

//读取指定行的内容
readLineVarFile(fileName,lineNumber);
}
}

在C盘新建1.java文件,输入任意内容,

⑵ java中如何实现文件的批量读取并提取部分内容写入一个新文件。 单一文件读取写入参照补充

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Testa
{
public static void main(String[] args)
{
//传入参数为文件目录
test("d:/a.txt");
}

public static void test(String filePath){
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(filePath));
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}

String []columnName = {"Id", "Name", "Languages", "Math", "English"}; //列名
int []courseIndexs = {2, 3, 4}; //课程对应的列
int i,j,index;
String line;
List> students = new ArrayList>();
//记录Id和总值,用于排序
List> sortList = new ArrayList>();
try {
br.readLine(); //去掉第一行
while((line = br.readLine()) != null){
index = 0;
String []se = line.split(" ");
Map student = new HashMap();
for(i = 0; i < se.length; i++){
if("".equals(se[i])){
continue;
}
if(index >= columnName.length){
continue;
}
student.put(columnName[index], se[i]);
index++;
}
//计算平均值,总值
double total = 0;
for(j = 0; j < courseIndexs.length; j++){
total += Double.parseDouble((String) student.get(columnName[courseIndexs[j]]));
}
double average = total / courseIndexs.length;
//只取一位小数
average = Math.round(average * 10)/10;
student.put("Total", total);
student.put("Average", average);

Map sort = new HashMap();
sort.put("Id", student.get("Id"));
sort.put("Total", student.get("Total"));
sortList.add(sort);

students.add(student);
}
br.close();

//排序
for(i = 0; i < sortList.size(); i++){
for(j = i + 1; j < sortList.size(); j++){
if((Double)sortList.get(i).get("Total") < (Double)sortList.get(j).get("Total")){
Map temp = sortList.get(i);
sortList.set(i, sortList.get(j));
sortList.set(j, temp);
}
}
}
Map sortedId = new HashMap();
for(i = 0; i < sortList.size(); i++){
sortedId.put(sortList.get(i).get("Id"), i+1);
}

//设定序号
for(j = 0; j < students.size(); j++){
students.get(j).put("Order", sortedId.get(students.get(j).get("Id")));
}

//输出(写到原文件)
//PrintWriter pw = new PrintWriter(new File(filePath));
//输出(写到其他文件)
PrintWriter pw = new PrintWriter(new File("D:/b.txt"));

pw.println("Id\tName\tLan\tMath\tEnglish\tAverage\tTotal\tSort");
int cIndex;
for(i = 0; i < students.size(); i++){
Map st = students.get(i);
cIndex = 0;
pw.println(st.get(columnName[cIndex++]) + "\t" + st.get(columnName[cIndex++])
+ "\t" + st.get(columnName[cIndex++])+ "\t" + st.get(columnName[cIndex++])
+ "\t" + st.get(columnName[cIndex++])
+ "\t" + st.get("Total")
+ "\t" + st.get("Average")
+ "\t" + st.get("Order"));
}
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

⑶ java读取部分文件内容,怎样获取所读取这部分的大小

windows下文件换行默认追加" "的字符串,最后一行没有。

StringBuffersb=newStringBuffer();

inti=0;

Stringfinfo=null;

floatnewL0=0;

floatorgL=file.length();

while((finfo=fr.readLine())!=null)

{

i++;

if((sb.length()+finfo.length())<orgL)

{

sb.append(finfo+" ");

}

else

{

sb.append(finfo);

}

System.out.println("第"+i+"行:"+finfo+",读取长度:"+newL0+",字符总长度:"+orgL+",当前读取进度:"+(sb.length()/orgL)*100+"%");

}

⑷ java读取txt并获取某一部分字符串

public static String readFile(String filepath) {
StringBuffer string=new StringBuffer();
BufferedReader br=null;
try {
InputStreamReader isr = new InputStreamReader(new FileInputStream(filepath));
br=new BufferedReader(isr);
String line = null;
while((line=br.readLine())!= null){
string.append(line);
string.append(" ");
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return string.toString();
}

public static String rightStr(String str, int count) {
String result = "";
if (!strIsNull(str)) {
if (str.length() > count) {
result = str.substring(str.length() - count);
} else {
result = str;
}
}
return result;
}

给两个方法你参考下

⑸ java读取文件内容,分多个部分,每部分40字节,现每次只发送了前40个字节的内容,请帮忙看看哪里的问题,谢谢.

int len = content.length(); 这句不对的。content.length()返回的字符长度而不是字节长度。

对于非单字节编码而言content.length()长度永远小于content.getBytes().length,只有对单字节字符而言这两个长度才相等。

另外分数组处理实在不是好办法,即需要书写更长的代码,运行效率也低于用流方式处理的。

一下是我写的两种方式的处理代码 你能明显的比较出来。流只用一个循环,而字节数组至少要一个双循环。

Strings="实现dhl反对思考浪费你的身份了你看打发士大夫士大夫似的";
//数组方式
byte[]bs=s.getBytes();
intlength=5,len=bs.length/length,len1;
byte[]tmp=newbyte[length];
for(inti=0;i<len;i++){
for(intj=0;j<length;j++)
tmp[j]=bs[i*length+j];
System.out.println(Arrays.toString(tmp));
}
tmp=newbyte[length];
if((len1=bs.length%length)>0){
for(inti=0;i<len1;i++)
tmp[i]=bs[len*length+i];
System.out.println(Arrays.toString(tmp));
}
//流方式
InputStreamis=newByteArrayInputStream(s.getBytes());
intlength2=5,len2;
byte[]bs2=newbyte[length2];
try{
while((len2=is.read(bs2))>0){
if(len2!=length2)
Arrays.fill(bs2,len2,5,(byte)0);
System.out.println(Arrays.toString(bs2));
}
}catch(IOExceptione){
e.printStackTrace();
}

⑹ java文件读取指定内容

给你写了一个小方法,应该满足你的要求了:

//url是你要读取的文件的路径,是所要求的包含的字符串如这里是“COMMON.9006 - 000332”。
public static void readWantedText(String url, String wanted) {
try {
FileReader fr = new FileReader(url);
BufferedReader br = new BufferedReader(fr);

String temp = "";// 用于临时保存每次读取的内容
while (temp != null) {
temp = br.readLine();
if (temp != null && temp.contains(wanted)) {
System.out.println(temp);
}
}

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

用的话直接调用这个方法就可以了:例如
readWantedText("D:\\test.txt", "COMMON.9006 - 000332");
//注意java路径需要在每条\前面在加条\表示转义。

⑺ Java如何实现读取一个txt文件的所有内容,然后提取所需的部分并把它写入到另一个txt文件中

代码如下:

importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.util.ArrayList;
importjava.util.List;

publicclassApp{

/**
*保存list到指定文件
*@paramlist
*@paramfilePath
*@throwsIOException
*@throwsFileNotFoundException
*/
staticvoidsave(List<String>list,StringfilePath)throwsFileNotFoundException,IOException{

try(FileOutputStreamoutputStream=newFileOutputStream(filePath);
=newOutputStreamWriter(outputStream);
BufferedWriterwriter=newBufferedWriter(streamWriter)
){

for(Stringline:list){
writer.write(line+System.lineSeparator());
}
}
}

publicstaticvoidmain(String[]args)throwsIOException{

List<String>list1=newArrayList<>();
List<String>list2=newArrayList<>();
List<String>list3=newArrayList<>();

Filefile=newFile("d:/temp/0.txt");

try(FileInputStreamstream=newFileInputStream(file);
InputStreamReaderstreamReader=newInputStreamReader(stream);
BufferedReaderreader=newBufferedReader(streamReader)){

Stringline="";

while((line=reader.readLine())!=null){

//去除开始的数字
line=line.replaceFirst("\d+","");

if(line.contains("Organ")){
//包含Organ放入list1
list1.add(line);
}elseif(line.contains("Location")){
//包含Location放入list2
list2.add(line);
}elseif(line.contains("Person")){
//包含Person放入list3
list3.add(line);
}
}
}

if(!list1.isEmpty()){
save(list1,"d:/temp/1.txt");
}

if(!list2.isEmpty()){
save(list2,"d:/temp/2.txt");
}

if(!list3.isEmpty()){
save(list3,"d:/temp/3.txt");
}
}
}

⑻ Java如何读取TXT文件中的部分数字

文件流的读取你就自己搞定吧,下面的步骤如下:
String str ="shoes 25.3 5 126.5\ncloths 50.0 10 500.0\nsugar 1.25 1 1.25\ncoffee 3.0 7 21.0ntelephone 20.0 2 40.0\ncup 4.0 25 100.0";
String[] splitArray = str.trim().split("\n");
String[] newSplitArray = splitArray[splitArray.length-1].trim().split(" ");
double returnD =0;
for ( int i = 0; i < newSplitArray.length; i++ ) {
if(newSplitArray[i].matches("[\\d.]+")){
returnD+=Double.parseDouble(newSplitArray[i]);
}
}
System.out.println(returnD);

⑼ JAVA读取指定文件里面的指定内容

给你写了一个小方法,应该满足你的要求了:

//url是你要读取的文件的路径,wanted是所要求的包含的字符串如这里是“COMMON.9006 - 000332”。
public static void readWantedText(String url, String wanted) {
try {
FileReader fr = new FileReader(url);
BufferedReader br = new BufferedReader(fr);

String temp = "";// 用于临时保存每次读取的内容
while (temp != null) {
temp = br.readLine();
if (temp != null && temp.contains(wanted)) {
System.out.println(temp);
}
}

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

用的话直接调用这个方法就可以了:例如
readWantedText("D:\\test.txt", "COMMON.9006 - 000332");
//注意java路径需要在每条\前面在加条\表示转义。

⑽ 如何利用java读取磁盘文件中所需部分资源

先全部读取出来,再判断!

阅读全文

与java中部分读取文件相关的资料

热点内容
云学app哪个好 浏览:498
因为什么对编程感兴趣 浏览:161
linux获取内核时间 浏览:926
iphonehome键变硬 浏览:32
所有文件onion 浏览:841
word写作格式 浏览:1
网页中文件及文件夹的命名规则 浏览:105
水蜜桃电子书txt全集下载 浏览:850
豫剧电影农村片 浏览:26
javaprivate类继承 浏览:487
电脑文件历史记录干什么用 浏览:136
如何去掉文件的只读属性 浏览:403
水沫缘浅的全部作品集下载 浏览:575
免费电影在线观看网站 浏览:697
涨奶挤出来的母乳电影 浏览:897
催眠控制类百合 浏览:13
编程属于哪个发票范围 浏览:207
ipadqq怎么下载群文件 浏览:272
投屏流畅的电影网站 浏览:506
手机书包网 浏览:694

友情链接