java读取文本文件txt时候的换行问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java读取文本文件txt时候的换行问题相关的知识,希望对你有一定的参考价值。
文本文件如下,我写的程序也在下面,用java读取一行以后进行字符操作(细节可以忽略),但是我下面写的程序只能够读一行,我不知道该怎么去让java判断读哪一行(本来我爸temp写成二维数组,可是一直报错),请帮我修改一下可以读整个txt,每行进行字符操作存一个字符串,尽可能的详细。
1: 我是大学。我郁文[的]好学生 【作者】
2: 就说咱们北京吧,有[的]那个 【知道】
3: 这穷人[的]就最怕丧事和喜事儿 【各地】
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ss
public static void main(String[] arges) throws IOException
ss t=new ss();
t.reader("c://a.txt");
//for(int i=0;i<array.length;i++)
// System.out.print(array[i]+";");
//
@SuppressWarnings("null")
public void reader(String filename) throws IOException
int i=0;
byte[] temp = null;
FileReader F=new FileReader(filename);
BufferedReader B=new BufferedReader(F);
String Read=B.readLine();
while(Read!=null)
String[] strNumber=Read.split("\n");
temp=strNumber[i].getBytes();
Read=B.readLine();
i++;
B.close();
F.close();
for(int k=0;k<temp.length;k++)
System.out.print(temp[k]+" ");
System.out.println();
int j=0;
int[] num=new int[3];
String ex=": [的。【】]";
byte[] exx=ex.getBytes();
while(j<temp.length)
if(temp[j]==exx[0]&&temp[j+1]==exx[1]&&j<10)
num[0]=j+2;
if(temp[j]==exx[5]&&temp[j+1]==exx[6]&&temp[j+2]==exx[1])
num[1]=j+1;
if(temp[j]==exx[7]&&temp[j+1]==exx[8])
num[2]=j+2;
j++;
for(int k=0;k<num.length;k++)
System.out.print(num[k]+" ");
System.out.println();
byte[] str = new byte[num[1]-num[0]+temp.length-num[2]+1];
int s=0;
for(int k=num[0];k<=num[1];k++)
str[s]=temp[k];
s++;
for(int k=num[2];k<temp.length-2;k++)
str[s]=temp[k];
s++;
int n1=0,n2=0;
int count=0;
for(int k=0;k<str.length;k++)
if(str[k]==exx[2])
count++;
byte[] strnew=new byte[str.length-2*count];
while(n1<str.length)
strnew[n2]=str[n1];
if(str[n1]==exx[2]||str[n1]==exx[11])
n2--;
n1++;
n2++;
for(int k=0;k<str.length;k++)
System.out.print(str[k]+" ");
System.out.println();
String strtemp0=new String(temp);
System.out.print(strtemp0);
System.out.println();
String strtemp=new String(strnew);
System.out.print(strtemp);
System.out.println();
亲们,我的意思是读一行为字符串,转化为字节,操作后在转化会字符串,这个操作需要一行处理一次,但是我的txt有很n行,所以我要做n次,可是我不会只读txt的某一行。。。
BufferedReader bre = null;
try
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
System.out.println(str);//原样输出读到的内容
;
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。 参考技术A String Read=B.readLine();
while(Read!=null)
String[] strNumber=Read.split("\n");
temp=strNumber[i].getBytes();
Read=B.readLine();
i++;
改成
String Read="";
String txt=""
while((Read=B.readLine())!=null)
txt+=Read;
txt就是全文,如果要拆分,可以用你的split(“\n”);
你的表达太犀利了。
while((Read=B.readLine())!=null)
Read就是一行的信息。
追问
看清楚问题额,我是想读某一行,比如只读第78行
追答但是我的txt有很n行,所以我要做n次,可是我不会只读txt的某一行
看清楚问题额,我是想读某一行,比如只读第78行
是我眼神有问题?还是理解有问题。
如果只想读第n行,那就弄个计数器,
int count=0;
int index=77;
String Read="";
String txt=""
while((Read=B.readLine())!=null)
if(count==index)
txt=Read;
count++;
这个是只读第某行。
import java.io.*;
public class TxtInputStream
public static void main(String[] args)throws IOException
InputStream input = null;
File file = new File("c:\\a.txt");
input = new FileInputStream(file);
byte[] temp = new byte[(int)file.length()];
while(input.read(temp,0,(int)file.length()) != -1)
String a = new String(temp);
System.out.println(a);
参考技术C String line;
while((line=br.readLine())!=null)
//循环读取每一行
python实现文件读取以及字段统计
1 import re 2 3 4 def find_item(hero): 5 # 读取文件 6 with open(‘sanguo_utf8.txt‘, encoding=‘utf-8‘) as f1: 7 # 去掉内容中的换行,将文本变为一行 8 data = f1.read().replace(‘ ‘, ‘‘) 9 # 使用正则表达式,返回传入参数的总出现情况。 10 # 当使用len()方法时,则会返回该参数总的出现次数 11 name_num = re.findall(hero, data) 12 print(‘主角 %s 出现了 %s 次‘ % (hero, len(name_num))) 13 return len(name_num) 14 15 16 name_dict = {} 17 # 读取姓名文件 18 with open(‘name.txt‘, encoding=‘utf-8‘) as f2: 19 # 将姓名以‘|‘进行分割 20 for line in f2: 21 names = line.split(‘|‘) 22 # 遍历所有姓名 23 for n in names: 24 # 将姓名作为参数传递给统计姓名出现次数的函数 25 # 返回每个姓名出现的次数 26 name_num = find_item(n) 27 # 将每个姓名作为键,出现次数作为值。传给num_dict[]字典 28 name_dict[n] = name_num
打印结果:
主角 諸葛亮 出现了 157 次
主角 關羽 出现了 9 次
主角 劉備 出现了 297 次
主角 曹操 出现了 940 次
主角 孫權 出现了 321 次
主角 關羽 出现了 9 次
主角 張飛 出现了 364 次
主角 呂布 出现了 342 次
主角 周瑜 出现了 240 次
主角 趙雲 出现了 313 次
主角 龐統 出现了 82 次
主角 司馬懿 出现了 287 次
主角 黃忠 出现了 189 次
主角 馬超 出现了 219 次
以上是关于java读取文本文件txt时候的换行问题的主要内容,如果未能解决你的问题,请参考以下文章
怎么解决linux中的TXT在win7中的排序问题,linux中的换行在win7中不适用了。