如何截取File文件里的内容啊 我最近在学做唐诗宋词这个小软件,而那些诗词都是从通过File文件将其导入进去,我想把File文件内的内容将其截取成每一首一首的诗,在进行截取它的诗歌名、作者名和诗句,这要如何截取啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把文件读进内存,然后判断"\xd\xa",就是按行分析,找出一定规律后,针对性的写截取代码 你的文件是什么格式的?txt?如果有规律的话可以用工具导入到exl里,然后再生成sql数据库文件。 用正则表达式吧,如果不懂正则表达式的话,去baidu搜索,30分钟学会正则表达式 用正则当然是最好的方法,但是自己解析也不难,你检查一下,看看是否格式都是这样:《标题》作者:XXX内容【注解】:1、XXX...【韵译】:XXX以及传说中的分割线=============================确定后分析就是了,首先把文件都读进内存,然后挨个分析文字,比如遇到“《”,做个标记--标题开始,遇到“》”,把从标题开始地方到现在的中间内容保存为标题,以此类推,把整首诗分析出来,遇到分割线,循环处理下一首,我之前说的“\xd\xa”,是回车换行符 private static int pos = 0; /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { File mFile = new File("E:\\1.txt"); int fileSize = (int) mFile.length(); InputStream in = null ; in = new FileInputStream(mFile) ; byte[] bt = new byte[fileSize]; String title, author, text, note, trans; in.read(bt); title = getTitle(bt, fileSize); author = getAuthor(bt, fileSize); text = getText(bt, fileSize); note = getNote(bt, fileSize); trans = getTrans(bt, fileSize); System.out.println("title: " + title); System.out.println("author: " + author); System.out.println("text: " + text); System.out.println("note: " + note); System.out.println("trans: " + trans); } private static String getTitle(byte[] bt, int fileSize) { String title = null, str = null;; int titleStart = 0; for(int i = pos; i < fileSize - 1; i += 2) { str = new String(bt, i, 2); if(str.equals("《")) { titleStart = i + 2; } else if(str.equals("》")) { pos = i; int titleLength = pos - titleStart; byte[] titleBt = new byte[titleLength]; System.arraycopy(bt, titleStart, titleBt, 0, titleLength); title = new String(titleBt); break; } } return title; } private static String getAuthor(byte[] bt, int fileSize) { String author = null, str = null; int authorStart = 0; authorStart = pos + 10; for(int i = pos; i < fileSize - 1; i += 2) { str = new String(bt, i, 2); if((authorStart != 0) && (i > authorStart) &&(str.indexOf("\n") != -1)) { pos = i; int authorLength = pos - authorStart; byte[] authorBt = new byte[authorLength]; System.arraycopy(bt, authorStart, authorBt, 0, authorLength); author = new String(authorBt); break; } } return author; } private static String getText(byte[] bt, int fileSize) { String text = null, str = null; int textStart = 0, textEnd = 0; textStart = pos + 2; for(int i = pos; i < fileSize - 1; i += 2) { str = new String(bt, i, 2); if(str.equals("【")) { textEnd = i - 2; int textLength = textEnd - textStart; byte[] textBt = new byte[textLength]; System.arraycopy(bt, textStart, textBt, 0, textLength); text = new String(textBt); pos = i; break; } } return text; } private static String getNote(byte[] bt, int fileSize) { String note = null, str = null; int noteStart = 0, noteEnd = 0; noteStart = pos + 12; for(int i = noteStart; i < fileSize - 1; i += 2) { str = new String(bt, i, 2); if(str.equals("【")) { noteEnd = i - 2; int noteLength = noteEnd - noteStart; byte[] noteBt = new byte[noteLength]; System.arraycopy(bt, noteStart, noteBt, 0, noteLength); note = new String(noteBt); pos = i; break; } } return note; } private static String getTrans(byte[] bt, int fileSize) { String trans = null, str = null; int transStart = 0, transEnd = 0; transStart = pos + 12; for(int i = transStart; i < fileSize - 1; i += 2) { str = new String(bt, i, 2); if(str.equals("==")) { transEnd = i - 2; int noteLength = transEnd - transStart; byte[] noteBt = new byte[noteLength]; System.arraycopy(bt, transStart, noteBt, 0, noteLength); trans = new String(noteBt); pos = i; break; } } return trans; } 国内移动Web开发平台Rexsee开源,扩展API、详细源码全部开放 循环遍历文件夹 网络版的《Android开发指南》中文版,和大家分享一下 是否可以将手机上的sqllite数据库复制下来修改后再上传呢? 下载的android App源码编译错误 Android 系统 横竖屏设置 Android socket传送音频同步问题 OpenStreetMap地图显示问题 listview的item怎么固定高度 关于sqlcipher打开EnMicroMsg.db中message时,软件崩溃的问题 关于Mediaplayer、的一个知识点记录、 android连接oracle,用户登录
如果有规律的话可以用工具导入到exl里,然后再生成sql数据库文件。
《标题》
作者:XXX
内容【注解】:
1、XXX
...【韵译】:
XXX
以及传说中的分割线
=============================确定后分析就是了,首先把文件都读进内存,然后挨个分析文字,比如遇到“《”,做个标记--标题开始,遇到“》”,把从标题开始地方到现在的中间内容保存为标题,以此类推,把整首诗分析出来,遇到分割线,循环处理下一首,我之前说的“\xd\xa”,是回车换行符
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File mFile = new File("E:\\1.txt");
int fileSize = (int) mFile.length();
InputStream in = null ;
in = new FileInputStream(mFile) ;
byte[] bt = new byte[fileSize];
String title, author, text, note, trans;
in.read(bt);
title = getTitle(bt, fileSize);
author = getAuthor(bt, fileSize);
text = getText(bt, fileSize);
note = getNote(bt, fileSize);
trans = getTrans(bt, fileSize);
System.out.println("title: " + title);
System.out.println("author: " + author);
System.out.println("text: " + text);
System.out.println("note: " + note);
System.out.println("trans: " + trans);
} private static String getTitle(byte[] bt, int fileSize)
{
String title = null, str = null;;
int titleStart = 0;
for(int i = pos; i < fileSize - 1; i += 2)
{
str = new String(bt, i, 2);
if(str.equals("《"))
{
titleStart = i + 2;
}
else if(str.equals("》"))
{
pos = i;
int titleLength = pos - titleStart;
byte[] titleBt = new byte[titleLength];
System.arraycopy(bt, titleStart, titleBt, 0, titleLength);
title = new String(titleBt);
break;
}
}
return title;
}
private static String getAuthor(byte[] bt, int fileSize)
{
String author = null, str = null;
int authorStart = 0;
authorStart = pos + 10;
for(int i = pos; i < fileSize - 1; i += 2)
{
str = new String(bt, i, 2);
if((authorStart != 0) && (i > authorStart)
&&(str.indexOf("\n") != -1))
{
pos = i;
int authorLength = pos - authorStart;
byte[] authorBt = new byte[authorLength];
System.arraycopy(bt, authorStart, authorBt, 0, authorLength);
author = new String(authorBt);
break;
}
}
return author;
}
private static String getText(byte[] bt, int fileSize)
{
String text = null, str = null;
int textStart = 0, textEnd = 0;
textStart = pos + 2;
for(int i = pos; i < fileSize - 1; i += 2)
{
str = new String(bt, i, 2);
if(str.equals("【"))
{
textEnd = i - 2;
int textLength = textEnd - textStart;
byte[] textBt = new byte[textLength];
System.arraycopy(bt, textStart, textBt, 0, textLength);
text = new String(textBt);
pos = i;
break;
}
}
return text;
}
private static String getNote(byte[] bt, int fileSize)
{
String note = null, str = null;
int noteStart = 0, noteEnd = 0;
noteStart = pos + 12;
for(int i = noteStart; i < fileSize - 1; i += 2)
{
str = new String(bt, i, 2);
if(str.equals("【"))
{
noteEnd = i - 2;
int noteLength = noteEnd - noteStart;
byte[] noteBt = new byte[noteLength];
System.arraycopy(bt, noteStart, noteBt, 0, noteLength);
note = new String(noteBt);
pos = i;
break;
}
}
return note;
}
private static String getTrans(byte[] bt, int fileSize)
{
String trans = null, str = null;
int transStart = 0, transEnd = 0;
transStart = pos + 12;
for(int i = transStart; i < fileSize - 1; i += 2)
{
str = new String(bt, i, 2);
if(str.equals("=="))
{
transEnd = i - 2;
int noteLength = transEnd - transStart;
byte[] noteBt = new byte[noteLength];
System.arraycopy(bt, transStart, noteBt, 0, noteLength);
trans = new String(noteBt);
pos = i;
break;
}
}
return trans;
}