DAT估计是个二进制 或者文本 跟普通读取文件是一样的
读取上来 你再对文件格式进行拆分 首先你要了解 它的格式是什么 你可以用
NOTEPAD++或者 C32ASM打开 看看
public class ReadFromFile {
/
以字节为单位读取文件,常用于读二进制文件,如、声音、影像等文件。
/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
Systemoutprintln("以字节为单位读取文件内容,一次读一个字节:");
// 一次读一个字节
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = inread()) != -1) {
Systemoutwrite(tempbyte);
}
inclose();
} catch (IOException e) {
eprintStackTrace();
return;
}
try {
Systemoutprintln("以字节为单位读取文件内容,一次读多个字节:");
// 一次读多个字节
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFileshowAvailableBytes(in);
// 读入多个字节到字节数组中,byteread为一次读入的字节数
while ((byteread = inread(tempbytes)) != -1) {
Systemoutwrite(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1printStackTrace();
} finally {
if (in != null) {
try {
inclose();
} catch (IOException e1) {
}
}
}
}
/
以字符为单位读取文件,常用于读文本,数字等类型的文件
/
public static void readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
try {
Systemoutprintln("以字符为单位读取文件内容,一次读一个字节:");
// 一次读一个字符
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = readerread()) != -1) {
// 对于windows下,\r\n这两个字符在一起时,表示一个换行。
// 但如果这两个字符分开显示时,会换两次行。
// 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
if (((char) tempchar) != '\r') {
Systemoutprint((char) tempchar);
}
}
readerclose();
} catch (Exception e) {
eprintStackTrace();
}
try {
Systemoutprintln("以字符为单位读取文件内容,一次读多个字节:");
// 一次读多个字符
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(fileName));
// 读入多个字符到字符数组中,charread为一次读取字符数
while ((charread = readerread(tempchars)) != -1) {
// 同样屏蔽掉\r不显示
if ((charread == tempcharslength)
&& (tempchars[tempcharslength - 1] != '\r')) {
Systemoutprint(tempchars);
} else {
for (int i = 0; i < charread; i++) {
if (tempchars[i] == '\r') {
continue;
} else {
Systemoutprint(tempchars[i]);
}
}
}
}
} catch (Exception e1) {
e1printStackTrace();
} finally {
if (reader != null) {
try {
readerclose();
} catch (IOException e1) {
}
}
}
}
/
以行为单位读取文件,常用于读面向行的格式化文件
/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
Systemoutprintln("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = readerreadLine()) != null) {
// 显示行号
Systemoutprintln("line " + line + ": " + tempString);
line++;
}
readerclose();
} catch (IOException e) {
eprintStackTrace();
} finally {
if (reader != null) {
try {
readerclose();
} catch (IOException e1) {
}
}
}
}
/
随机读取文件内容
/
public static void readFileByRandomAccess(String fileName) {
RandomAccessFile randomFile = null;
try {
Systemoutprintln("随机读取一段文件内容:");
// 打开一个随机访问文件流,按只读方式
randomFile = new RandomAccessFile(fileName, "r");
// 文件长度,字节数
long fileLength = randomFilelength();
// 读文件的起始位置
int beginIndex = (fileLength > 4) 4 : 0;
// 将读文件的开始位置移到beginIndex位置。
randomFileseek(beginIndex);
byte[] bytes = new byte[10];
int byteread = 0;
// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。
// 将一次读取的字节数赋给byteread
while ((byteread = randomFileread(bytes)) != -1) {
Systemoutwrite(bytes, 0, byteread);
}
} catch (IOException e) {
eprintStackTrace();
} finally {
if (randomFile != null) {
try {
randomFileclose();
} catch (IOException e1) {
}
}
}
}
/
显示输入流中还剩的字节数
/
private static void showAvailableBytes(InputStream in) {
try {
Systemoutprintln("当前字节输入流中的字节数为:" + inavailable());
} catch (IOException e) {
eprintStackTrace();
}
}
public static void main(String[] args) {
String fileName = "C:/temp/newTemptxt";
ReadFromFilereadFileByBytes(fileName);
ReadFromFilereadFileByChars(fileName);
ReadFromFilereadFileByLines(fileName);
ReadFromFilereadFileByRandomAccess(fileName);
}
}
JDK版本 15
测试结果
resulttxt 文件中的内容如下
李明 40:50:60:70:80
姓名:李明 总成绩:300
刘胜 45:55:65:75:85
姓名:刘胜 总成绩:625
不明白+QQ 379821283
代码如下:
package comrabbittest;
import javaioBufferedReader;
import javaioBufferedWriter;
import javaioFileInputStream;
import javaioFileOutputStream;
import javaioInputStreamReader;
import javaioOutputStreamWriter;
public class TestFile {
public static void main(String[] args) throws Exception{
//获得文件输入流 假设目标文件名为datatxt
FileInputStream fin = new FileInputStream("datatxt");
InputStreamReader inR = new InputStreamReader(fin);
BufferedReader bfR = new BufferedReader(inR);
//获得文件输出流 假设目标文件名为resutltxt 追加方式
FileOutputStream fout = new FileOutputStream("resutltxt",true);
OutputStreamWriter outW = new OutputStreamWriter(fout);
BufferedWriter bfW = new BufferedWriter(outW);
String temp = "";//临时缓存 保存读取到的每一行记录
String[] tempArr = {};//临时缓存 保存用空格拆分该行记录得到的数组
String name="";//临时缓存 保存姓名
String[] scoreTemp = {};//临时缓存 保存分数串拆分后得到的数组
int totalScore = 0;//临时缓存 总成绩
//开始读文件
while((temp=bfRreadLine())!=null){
//正则表达式拆分读取到的每行 拆分成 姓名+分数串
tempArr = tempsplit("[ ]+");
//得到姓名
name = tempArr[0];
//正则表达式拆分分数串得到分数数组
scoreTemp = tempArr[1]split(":");
//循环分数数组 得到总成绩
for(int i=0;i<scoreTemplength;i++){
totalScore += IntegerparseInt(scoreTemp[i]);
}
//写入结果文件
bfWwrite(temp+"\r\n");
bfWwrite("姓名:"+name+" 总成绩:"+totalScore+"\r\n");
}
//关闭流
bfRclose();
bfWclose();
}
}
测试正常
通常,可以直接通过文件流来读取txt文件的内容,但有时可能会出现乱码!此时只要设置一下文件字符编码即可。
(1)JAVA 读取txt文件内容
(2)读取文件效果:
以上就是关于JAVA中怎么读取DAT文件中的内容全部的内容,包括:JAVA中怎么读取DAT文件中的内容、java 怎么读取文件中的字符和数据、java如何读取txt文件内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)