java读取文件内容计算平均值并输出到新的文件

java读取文件内容计算平均值并输出到新的文件,第1张

在工程目录下,输入文件是123txt 输出resulttxt

package zhidao;

import javaioFileNotFoundException;

import javaioIOException;

public class zhidao {

public static void main(String[] args) throws IOException {

int average=0;

int count=0;

String strInput;

javaioBufferedReader reader=new javaioBufferedReader(new javaioFileReader( "\\123txt "));

javaioBufferedWriter writer=new javaioBufferedWriter(new javaioFileWriter( "\\resulttxt "));

if ((strInput=readerreadLine())!=null)

{

String[] strItems = strInputsplit(" ");

for(String item:strItems)

{

average+=IntegerparseInt(item);

count++;

}

}

writerwrite(DoubletoString(average/(count10)));

readerclose();

writerclose();

}

}

java读取文件方法大全

一、多种方式读文件内容

1、按字节读取文件内容

2、按字符读取文件内容

3、按行读取文件内容

4、随机读取文件内容

Java代码

1 import javaioBufferedReader;

2 import javaioFile;

3 import javaioFileInputStream;

4 import javaioFileReader;

5 import javaioIOException;

6 import javaioInputStream;

7 import javaioInputStreamReader;

8 import javaioRandomAccessFile;

9 import javaioReader;

10

11 public class ReadFromFile {

12 /

13 以字节为单位读取文件,常用于读二进制文件,如、声音、影像等文件。

14

15 @param fileName

16 文件的名

17 /

18 public static void readFileByBytes(String fileName) {

19 File file = new File(fileName);

20 InputStream in = null;

21 try {

22 Systemoutprintln("以字节为单位读取文件内容,一次读一个字节:");

23 // 一次读一个字节

24 in = new FileInputStream(file);

25 int tempbyte;

26 while ((tempbyte = inread()) != -1) {

27 Systemoutwrite(tempbyte);

28 }

29 inclose();

30 } catch (IOException e) {

31 eprintStackTrace();

32 return;

33 }

34 try {

35 Systemoutprintln("以字节为单位读取文件内容,一次读多个字节:");

36 // 一次读多个字节

37 byte[] tempbytes = new byte[100];

38 int byteread = 0;

39 in = new FileInputStream(fileName);

40 ReadFromFileshowAvailableBytes(in);

41 // 读入多个字节到字节数组中,byteread为一次读入的字节数

42 while ((byteread = inread(tempbytes)) != -1) {

43 Systemoutwrite(tempbytes, 0, byteread);

44 }

45 } catch (Exception e1) {

46 e1printStackTrace();

47 } finally {

48 if (in != null) {

49 try {

50 inclose();

51 } catch (IOException e1) {

52 }

53 }

54 }

55 }

56

57 /

58 以字符为单位读取文件,常用于读文本,数字等类型的文件

59

60 @param fileName

61 文件名

62 /

63 public static void readFileByChars(String fileName) {

64 File file = new File(fileName);

65 Reader reader = null;

66 try {

67 Systemoutprintln("以字符为单位读取文件内容,一次读一个字节:");

68 // 一次读一个字符

69 reader = new InputStreamReader(new FileInputStream(file));

70 int tempchar;

71 while ((tempchar = readerread()) != -1) {

72 // 对于windows下,\r\n这两个字符在一起时,表示一个换行。

73 // 但如果这两个字符分开显示时,会换两次行。

74 // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。

75 if (((char) tempchar) != '\r') {

76 Systemoutprint((char) tempchar);

77 }

78 }

79 readerclose();

80 } catch (Exception e) {

81 eprintStackTrace();

82 }

83 try {

84 Systemoutprintln("以字符为单位读取文件内容,一次读多个字节:");

85 // 一次读多个字符

86 char[] tempchars = new char[30];

87 int charread = 0;

88 reader = new InputStreamReader(new FileInputStream(fileName));

89 // 读入多个字符到字符数组中,charread为一次读取字符数

90 while ((charread = readerread(tempchars)) != -1) {

91 // 同样屏蔽掉\r不显示

92 if ((charread == tempcharslength)

93 && (tempchars[tempcharslength - 1] != '\r')) {

94 Systemoutprint(tempchars);

95 } else {

96 for (int i = 0; i < charread; i++) {

97 if (tempchars[i] == '\r') {

98 continue;

99 } else {

100 Systemoutprint(tempchars[i]);

101 }

102 }

103 }

104 }

105

106 } catch (Exception e1) {

107 e1printStackTrace();

108 } finally {

109 if (reader != null) {

110 try {

111 readerclose();

112 } catch (IOException e1) {

113 }

114 }

115 }

116 }

117

118 /

119 以行为单位读取文件,常用于读面向行的格式化文件

120

121 @param fileName

122 文件名

123 /

124 public static void readFileByLines(String fileName) {

125 File file = new File(fileName);

126 BufferedReader reader = null;

127 try {

128 Systemoutprintln("以行为单位读取文件内容,一次读一整行:");

129 reader = new BufferedReader(new FileReader(file));

130 String tempString = null;

131 int line = 1;

132 // 一次读入一行,直到读入null为文件结束

133 while ((tempString = readerreadLine()) != null) {

134 // 显示行号

135 Systemoutprintln("line " + line + ": " + tempString);

136 line++;

137 }

138 readerclose();

139 } catch (IOException e) {

140 eprintStackTrace();

141 } finally {

142 if (reader != null) {

143 try {

144 readerclose();

145 } catch (IOException e1) {

146 }

147 }

148 }

149 }

150

151 /

152 随机读取文件内容

153

154 @param fileName

155 文件名

156 /

157 public static void readFileByRandomAccess(String fileName) {

158 RandomAccessFile randomFile = null;

159 try {

160 Systemoutprintln("随机读取一段文件内容:");

161 // 打开一个随机访问文件流,按只读方式

162 randomFile = new RandomAccessFile(fileName, "r");

163 // 文件长度,字节数

164 long fileLength = randomFilelength();

165 // 读文件的起始位置

166 int beginIndex = (fileLength > 4) 4 : 0;

167 // 将读文件的开始位置移到beginIndex位置。

168 randomFileseek(beginIndex);

169 byte[] bytes = new byte[10];

170 int byteread = 0;

171 // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

172 // 将一次读取的字节数赋给byteread

173 while ((byteread = randomFileread(bytes)) != -1) {

174 Systemoutwrite(bytes, 0, byteread);

175 }

176 } catch (IOException e) {

177 eprintStackTrace();

178 } finally {

179 if (randomFile != null) {

180 try {

181 randomFileclose();

182 } catch (IOException e1) {

183 }

184 }

185 }

186 }

187

188 /

189 显示输入流中还剩的字节数

190

191 @param in

192 /

193 private static void showAvailableBytes(InputStream in) {

194 try {

195 Systemoutprintln("当前字节输入流中的字节数为:" + inavailable());

196 } catch (IOException e) {

197 eprintStackTrace();

198 }

199 }

200

201 public static void main(String[] args) {

202 String fileName = "C:/temp/newTemptxt";

203 ReadFromFilereadFileByBytes(fileName);

204 ReadFromFilereadFileByChars(fileName);

205 ReadFromFilereadFileByLines(fileName);

206 ReadFromFilereadFileByRandomAccess(fileName);

207 }

208 }

二、将内容追加到文件尾部

1 import javaioFileWriter;

2 import javaioIOException;

3 import javaioRandomAccessFile;

4

5 /

6 将内容追加到文件尾部

7 /

8 public class AppendToFile {

9

10 /

11 A方法追加文件:使用RandomAccessFile

12 @param fileName 文件名

13 @param content 追加的内容

14 /

15 public static void appendMethodA(String fileName, String content) {

16 try {

17 // 打开一个随机访问文件流,按读写方式

18 RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");

19 // 文件长度,字节数

20 long fileLength = randomFilelength();

21 //将写文件指针移到文件尾。

22 randomFileseek(fileLength);

23 randomFilewriteBytes(content);

24 randomFileclose();

25 } catch (IOException e) {

26 eprintStackTrace();

27 }

28 }

29

30 /

31 B方法追加文件:使用FileWriter

32 @param fileName

33 @param content

34 /

35 public static void appendMethodB(String fileName, String content) {

36 try {

37 //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件

38 FileWriter writer = new FileWriter(fileName, true);

39 writerwrite(content);

40 writerclose();

41 } catch (IOException e) {

42 eprintStackTrace();

43 }

44 }

45

46 public static void main(String[] args) {

47 String fileName = "C:/temp/newTemptxt";

48 String content = "new append!";

49 //按方法A追加文件

50 AppendToFileappendMethodA(fileName, content);

51 AppendToFileappendMethodA(fileName, "append end \n");

52 //显示文件内容

53 ReadFromFilereadFileByLines(fileName);

54 //按方法B追加文件

55 AppendToFileappendMethodB(fileName, content);

56 AppendToFileappendMethodB(fileName, "append end \n");

57 //显示文件内容

58 ReadFromFilereadFileByLines(fileName);

59 }

60 }

我写了一段遍历某个文件查找指定文件的,你自己改成你需要的功能。

import javaioFile;

import javautilHashMap;

public class Test1 {

static HashMap<String, String> filelist=new HashMap<String, String>();

/

递归方法

@param path 文件路径

/

public static void find(String path){

File file=new File(path);

File[] files = filelistFiles();

//如果文件数组为null则返回

if (files == null)

return;

for (int i = 0; i < fileslength; i++) {

if (files[i]isDirectory()) {

//判断是不是文件夹,如果是文件夹则继续向下查找文件

find(files[i]getAbsolutePath());

} else {

//记录文件路径

String filePath = files[i]getAbsolutePath()toLowerCase();

//记录文件名

String fileName=files[i]getName()toLowerCase();

// Systemoutprintln("---"+strFileName);

filelistput(fileName, filePath);

}

}

}

public static void main(String[] args) {

//需要遍历的路径,也就是你要查找文件所在的路径

String path="D:\\kpi\\";

find(path);

Systemoutprintln("kpi9的路径:"+filelistget("kpi9"));

//输出结果:d:\kpi\kpi9

}

}

import javaioBufferedReader;

import javaioFile;

import javaioFileNotFoundException;

import javaioFileReader;

import javaioIOException;

import javaioPrintWriter;

import javautilArrayList;

import javautilHashMap;

import javautilList;

import javautilMap;

public class Testa

{

public static void main(String[] args)

{

//传入参数为文件目录

test("d:/atxt");

}

public static void test(String filePath){

BufferedReader br = null;

try {

br = new BufferedReader(new FileReader(filePath));

} catch (FileNotFoundException e) {

eprintStackTrace();

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 {

brreadLine(); //去掉第一行

while((line = brreadLine()) != null){

index = 0;

String []se = linesplit(" ");

Map student = new HashMap();

for(i = 0; i < selength; i++){

if(""equals(se[i])){

continue;

}

if(index >= columnNamelength){

continue;

}

studentput(columnName[index], se[i]);

index++;

}

//计算平均值,总值

double total = 0;

for(j = 0; j < courseIndexslength; j++){

total += DoubleparseDouble((String) studentget(columnName[courseIndexs[j]]));

}

double average = total / courseIndexslength;

//只取一位小数

average = Mathround(average 10)/10;

studentput("Total", total);

studentput("Average", average);

Map sort = new HashMap();

sortput("Id", studentget("Id"));

sortput("Total", studentget("Total"));

sortListadd(sort);

studentsadd(student);

}

brclose();

//排序

for(i = 0; i < sortListsize(); i++){

for(j = i + 1; j < sortListsize(); j++){

if((Double)sortListget(i)get("Total") < (Double)sortListget(j)get("Total")){

Map temp = sortListget(i);

sortListset(i, sortListget(j));

sortListset(j, temp);

}

}

}

Map sortedId = new HashMap();

for(i = 0; i < sortListsize(); i++){

sortedIdput(sortListget(i)get("Id"), i+1);

}

//设定序号

for(j = 0; j < studentssize(); j++){

studentsget(j)put("Order", sortedIdget(studentsget(j)get("Id")));

}

//输出(写到原文件)

//PrintWriter pw = new PrintWriter(new File(filePath));

//输出(写到其他文件)

PrintWriter pw = new PrintWriter(new File("D:/btxt"));

pwprintln("Id\tName\tLan\tMath\tEnglish\tAverage\tTotal\tSort");

int cIndex;

for(i = 0; i < studentssize(); i++){

Map st = studentsget(i);

cIndex = 0;

pwprintln(stget(columnName[cIndex++]) + "\t" + stget(columnName[cIndex++])

+ "\t" + stget(columnName[cIndex++])+ "\t" + stget(columnName[cIndex++])

+ "\t" + stget(columnName[cIndex++])

+ "\t" + stget("Total")

+ "\t" + stget("Average")

+ "\t" + stget("Order"));

}

pwflush();

pwclose();

} catch (IOException e) {

eprintStackTrace();

}

}

}

Java为安全应用提供了丰富的API,J2SDK14 的JSSE (JavaTM Secure Socket Extension) 包括javaxsecuritycertificate包,并且提供对证书的 *** 作方法,代码如下:

import javaxswing;

import javaawt;

import javaawtevent;

import javaxswingtable;

import javasecuritycertCertificateFactory;

import javasecuritycertX509Certificate;

import javaio;

public class CARead extends JPanel {

private String CA_Name;

private String CA_ItemData[][] = new String[9][2];

private String[] columnNames = {"证书字段标记","内容" };

public CARead(String CertName) {

CA_Name=CertName;

/ 三个Panel用来显示证书内容/

JTabbedPane tabbedPane = new JTabbedPane();

JPanel panelNormal = new JPanel();

tabbedPaneaddTab("普通信息", panelNormal);

JPanel panelAll=new JPanel();

panelAllsetLayout(new BorderLayout());

tabbedPaneaddTab("所有信息",panelAll);

JPanel panelBase64=new JPanel();

panelBase64setLayout(new BorderLayout());

tabbedPaneaddTab("Base64编码信息",panelBase64);

/ 读取证书常规信息 /

Read_Normal(panelNormal);

/ 读取证书文件字符串表示内容 /

Read_Bin(panelAll);

/ 读取证原始Base64编码形式的证书文件 /

Read_Raw(panelBase64);

tabbedPanesetSelectedIndex(0);

setLayout(new GridLayout(1, 1));

add(tabbedPane);

}

}

定义证书信息的读取函数如下:

private int Read_Normal(JPanel panel){

String Field;

try{

CertificateFactory certificate_factory=CertificateFactorygetInstance("X509");

FileInputStream file_inputstream=new FileInputStream(CA_Name);

X509Certificate

x509certificate=(X509Certificate)certificate_factorygenerateCertificate

(file_inputstream);

Field=x509certificategetType();

CA_ItemData[0][0]="类型";

CA_ItemData[0][1]=Field;

Field=IntegertoString(x509certificategetVersion());

CA_ItemData[1][0]="版本";

CA_ItemData[1][1]=Field;

Field=x509certificategetSubjectDN()getName();

CA_ItemData[2][0]="标题";

CA_ItemData[2][1]=Field;

/ 以下类似,这里省略

Field=x509certificategetNotBefore()toString();得到开始有效日期

Field=x509certificate getNotAfter()toString();得到截止日期

Field=x509certificategetSerialNumber()toString(16);得到序列号

Field=x509certificategetIssuerDN()getName();得到发行者名

Field=x509certificategetSigAlgName();得到签名算法

Field=x509certificategetPublicKey()getAlgorithm();得到公钥算法 /

file_inputstreamclose();

final JTable table = new JTable(CA_ItemData, columnNames);

TableColumn tc=null;

tc = tablegetColumnModel()getColumn(1);

tcsetPreferredWidth(600);

paneladd(table);

}catch(Exception exception){

exceptionprintStackTrace();

return -1;

}

return 0;

}

import javaioFile;

import javautilArrays;

public class FileName {

/

@param args

/

public static void main(String[] args) {

// 举例:

String fName =" G:\\Java_Source\\navigation_tigra_menu\\demo1\\img\\lev1_arrowgif ";

// 方法一:

File tempFile =new File( fNametrim());

String fileName = tempFilegetName();

Systemoutprintln("方法一:fileName = " + fileName);

// 方法二:

fName = fNametrim();

// fileName = fNamesubstring(fNamelastIndexOf("/")+1);

// 或者

fileName = fNamesubstring(fNamelastIndexOf("\\")+1);

Systemoutprintln("方法二:fileName = " + fileName);

// 方法三:

fName = fNametrim();

String temp[] = fNamesplit("\\\\"); /split里面必须是正则表达式,"\\"的作用是对字符串转义/

//temp[] = [G:, Java_Source, navigation_tigra_menu, demo1, img, lev1_arrowgif]

Systemoutprintln("temp[] = " + ArraystoString(temp));

fileName = temp[templength-1];

Systemoutprintln("方法三:fileName = " + fileName);

}

}

import javaioBufferedInputStream;

import javaioBufferedReader;

import javaioFile;

import javaioFileInputStream;

import javaioInputStreamReader;

import javaioReader;

 

public class H {

    /

      功能:Java读取txt文件的内容

      步骤:1:先获得文件句柄

      2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取

      3:读取到输入流后,需要读取生成字节流

      4:一行一行的输出。readline()。

      备注:需要考虑的是异常情况

      @param filePath

     /

    public static void readTxtFile(String filePath){

        try {

                String encoding="GBK";

                File file=new File(filePath);

                if(fileisFile() && fileexists()){ //判断文件是否存在

                    InputStreamReader read = new InputStreamReader(

                    new FileInputStream(file),encoding);//考虑到编码格式

                    BufferedReader bufferedReader = new BufferedReader(read);

                    String lineTxt = null;

                    while((lineTxt = bufferedReaderreadLine()) != null){

                        Systemoutprintln(lineTxt);

                    }

                    readclose();

        }else{

            Systemoutprintln("找不到指定的文件");

        }

        } catch (Exception e) {

            Systemoutprintln("读取文件内容出错");

            eprintStackTrace();

        }

     

    }

     

    public static void main(String argv[]){

        String filePath = "L:\\20121012txt";

//      "res/";

        readTxtFile(filePath);

    }

     

     

 

}

以上就是关于java读取文件内容计算平均值并输出到新的文件全部的内容,包括:java读取文件内容计算平均值并输出到新的文件、java文件如何读取、java 根据文件获取文件名及路径的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9697359.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存