不废话,上代码
public class MyFile {
private final String TAG = MyFile.class.getCanonicalName();
public static final String MY_DIR = "address";
public static final String ADDRESS_FILE = "sms_address.txt";
private File myDir;
private File addressTxt;
private File zipFile;
private String zipPath;
private String zipName;
public MyFile(Context context) {
myDir = context.getDir(MY_DIR, Context.MODE_WORLD_READABLE); //在终端的本地项目文件夹创建新的文件夹,路径参考:/data/data/(项目包名)/app_address("app_"是程序自带的)
// Log.i(TAG, "myApp path:" + myDir.getAbsolutePath());
addressTxt = new File(myDir, ADDRESS_FILE);
}
public void saveAddressTxt(ArrayList<String> address) {
try {
if (!addressTxt.exists()) {
addressTxt.createNewFile();
}
Log.i(TAG, "txt:" + addressTxt.getPath()); //txt文件路径参考:/data/data/(项目包名)/app_address/sms_address.txt
FileWriter fw = new FileWriter(addressTxt, false);
int num = address.size();
for (int i = 0; i < num; i++) {
fw.write(address.get(i) + "\r\n");
}
fw.close();
// FileReader fr = new FileReader(addressTxt);
// char[] chs = new char[1024];
// fr.read(chs);
// fr.close();
// Log.i(TAG, "addressTxt:" + new String(chs));
saveAddressZip();
} catch (IOException e) {
e.printStackTrace();
}
}
private void saveAddressZip() {
int ran = Utils.getRandom();
zipName = String.format("%d.zip", ran);
zipPath = String.format(myDir.getPath() + "/%d.zip", ran);
Log.i(TAG, "zip:" + zipPath); //zip路径参考:/data/data/(项目包名)/app_address/479575.zip
byte[] buf = new byte[512];
try {
// Create the ZIP file
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipPath));
// Compress the files
FileInputStream in = new FileInputStream(addressTxt);
// Add ZIP entry to output stream.
out.putNextEntry(new ZipEntry(ADDRESS_FILE));
// Transfer bytes from the file to the ZIP file
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
// Complete the entry
out.closeEntry();
in.close();
// Complete the ZIP file
out.close();
zipFile = new File(zipPath);
} catch (Exception e) {
e.printStackTrace();
}
}
public String getZipName() {
return zipName;
}
}