目录
1,测试代码
package com.yan1;
import java.io.FileReader;
import java.io.Reader;
public class App {
public static void main(String[] args) throws Exception {//文件异常抛出
ArrayList list = new ArrayList();//一个可自己改变大小的数组,调用这个方法
try (Reader r = new FileReader("data/calcCharNum.txt")) {//我的文件夹中的字符
int kk = -1;
while (true) {//循环语句
kk = r.read();
if (kk == -1)
break;
//进行空格,换行符不生成
if (kk == '\r' || kk == '\n' || kk == '\t')
kk = ' ';
list.add((char) kk);
}
list.sort();
list.show();
}
}
}
ArrayList我的数组代码
package com.yan1;
public class ArrayList {
private CharNum[] arr;
private int count;
public ArrayList() {
this(10);
}
public ArrayList(int length) {
arr = new CharNum[length];
}
public void show() {
for (int i = 0; i < count; i++) {
System.out.print(arr[i] + ",");
}
}
public void sort() {
for (int i = 1; i < count; i++) {
for (int k = 0; k < count - i; k++) {
if (arr[k].big(arr[k + 1])) {
CharNum tmp = arr[k];
arr[k] = arr[k + 1];
arr[k + 1] = tmp;
}
}
}
}
public void add(char ch) {
int exists = indexOf(ch);
if (exists >= 0) {
arr[exists].addNum();
} else {
arr[count++] = new CharNum(ch);
if (count >= arr.length)
resize();
}
}
private void resize() {
CharNum[] res = new CharNum[arr.length * 3 / 2];
for (int i = 0; i < count; i++)
res[i] = arr[i];
this.arr = res;
}
private int indexOf(char ch) {
int pos = -1;
for (int i = 0; i < count; i++) {
CharNum cn = arr[i];
if (cn.getCh() == ch) {
pos = i;
break;
}
}
return pos;
}
}
主方法Java
package com.yan1;
public class CharNum {
private char ch;
private int num;
public CharNum(char ch) {
this.ch = ch;
this.num = 1;
}
@Override
public String toString() {
return ch + "(" + num + ")";
}
public char getCh() {
return ch;
}
public void addNum() {
this.num++;
}
public boolean big(CharNum charNum) {
boolean res = false;
if (this.num > charNum.num)
res = true;
else if (this.num == charNum.num) {
res = this.ch > charNum.ch;
}
return res;
}
}
代码运行截图:
2,文件夹拷贝
package com.yan2;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;
public class Test1 {
public static void main(String[] args) throws Exception {//异常抛出
try (Reader r = new FileReader("src/com/yan1/ArrayList.java"); Writer w = new FileWriter("data/out.txt")) {//拷贝这个文件夹的内容,并且复制到out.txt这个文本里
for (int i = 0; i < 1024 * 1024; i++) {
int kk = r.read();
if (kk == -1)
break;
w.write(kk);
}
}
System.out.println("结束!");//结束语句
}
}
代码截图:
3,自定义一段文本,并且生成图片文件
package com.yan2;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
public class Test2 {
private static String source = "abcdrfghijklmnopqrstuvwxy";//初始化的字母
public static void main(String[] args) throws Exception {
BufferedImage buffer = new BufferedImage(120, 40, BufferedImage.TYPE_INT_RGB);
Graphics g = buffer.getGraphics();
g.setColor(Color.CYAN);
g.fillRect(0, 0, 120, 40);
g.setColor(Color.BLACK);
g.drawRect(2, 2, 114, 34);
String ss = generateCode(6);
g.setColor(Color.red);
g.setFont(new Font("黑体", Font.BOLD, 11));
g.drawString(ss, 40, 26);
g.dispose();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(buffer, "jpeg", baos);
baos.flush();
InputStream is = new ByteArrayInputStream(baos.toByteArray());
copyFile(is);
}
private static void copyFile(InputStream is) throws Exception {
//并且生成一个图片的bb文件
try (OutputStream os = new FileOutputStream("d:/bb.jpg");) {
byte[] data = new byte[8192];
int len = 0;
while ((len = is.read(data)) > 0)
os.write(data, 0, len);
}
}
private static String generateCode(int len) {
char[] res = new char[len];
Random r = new Random();
for (int i = 0; i < len; i++) {
int pos = r.nextInt(source.length());
res[i] = source.charAt(pos);
}
return new String(res);
}
}
代码截图: