• Android文件操作(可应用于JAVA)


    不知道如何上传文件,只好以代码的形式发布

    接口:

    package evan.FileSystem.EventsInterface;

    public interface IReaderData {
    /*读取数据*/
    void ReaderDatas(char[] buf);
    /*完成读取*/
    void FinishReader();
    }

    实现:

    package evan.FileSystem;

    import java.io.BufferedReader;
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;
    import evan.FileSystem.EventsInterface.IReaderData;
    import android.R.integer;
    import android.os.*;

    public class FileSystem {

    private static final String systemPath = Environment
    .getExternalStorageDirectory().getAbsolutePath();

    // 获取Android系统的根目录:ROOT
    public static String getSystemPath() {
    return systemPath;
    }

    private String pathString = "";
    private String fileName = "";
    private Boolean isOverWriteFile = false;// 重写File
    private IReaderData ReaderDataEvent;

    /* 获取文件全路径 */
    public String FileFullPath() {
    return pathString + File.separator + fileName;
    }

    /* 路径 */
    public String Path() {
    return pathString;
    }

    /* 文件名称 */
    public String FileName() {
    return fileName;
    }

    /*
    * @Description:指定文件系统进行操作 约定传入路径时,最后一个字符不以"\"或者"/"结束
    */
    public FileSystem(String path, String fileName, Boolean isOverWrite) {
    pathString = path;
    this.fileName = fileName;
    this.isOverWriteFile = isOverWrite;
    }

    /*
    * 默认重写File
    */
    public FileSystem(String path, String fileName) {
    this(path, fileName, true);
    }

    /* 已在构造函数里定义了 */
    public Boolean HasFile() {
    return HasFile(FileFullPath());
    }

    public Boolean HasFile(String fileFullPath) {
    File file = new File(fileFullPath);
    if (file.isFile()) {
    return file.exists();
    }
    return false;
    }

    public File CreatePath() throws IOException {
    return CreatePath(Path());
    }

    /*
    * 创建路径
    */
    public File CreatePath(String path) throws IOException {
    File file = new File(path + File.separator);
    if (file.mkdirs())
    return file;
    return null;
    }

    public File CreaterFile() throws IOException {
    return CreaterFile(FileFullPath());
    }

    /* 创建文件 */
    public File CreaterFile(String fileFullPath) throws IOException {
    File file = new File(fileFullPath);
    if (file.isFile()) {
    if (!HasFile(fileName) || isOverWriteFile)
    file.createNewFile();
    }
    return file;
    }

    public Boolean WriteStreamToFile(InputStream inputStream)
    throws FileNotFoundException, IOException {
    return WriteStreamToFile(FileFullPath(), inputStream);
    }

    /*默认GBK*/
    public InputStream StringToStream(String strMsg) throws UnsupportedEncodingException {
    return StringToStream(strMsg, "GBK");
    }

    /* 将字符串转为流 */
    public InputStream StringToStream(String strMsg,String charsetName) throws UnsupportedEncodingException {
    if (strMsg == null || strMsg.length() == 0) {
    return null;
    }
    return new ByteArrayInputStream(strMsg.getBytes(charsetName));
    }

    /* 将数据流写入文件中 */
    public Boolean WriteStreamToFile(String fileFullPath,
    InputStream inputStream) throws FileNotFoundException, IOException {
    OutputStream outputStream = new FileOutputStream(
    CreaterFile(fileFullPath));
    byte[] buffer = new byte[1024 * 2];
    Integer len = 0;
    while ((len = inputStream.read(buffer)) != -1) {
    outputStream.write(buffer, 0, len);
    }
    outputStream.flush();
    outputStream.close();
    return true;
    }

    public InputStream ReadFileToStream() throws FileNotFoundException {
    return ReadFileToStream(FileFullPath());
    }

    /* 读取文档流 */
    public InputStream ReadFileToStream(String fileFullPath)
    throws FileNotFoundException {
    InputStream inputStream = null;
    if (HasFile(fileFullPath)) {
    inputStream = new FileInputStream(fileFullPath);
    }
    return inputStream;
    }

    /* 默认采用GBK读取 */
    public BufferedReader GetBufferedReader(InputStream inputStream)
    throws UnsupportedEncodingException {
    return GetBufferedReader(inputStream, "GBK");
    }

    public BufferedReader GetBufferedReader(InputStream inputStream,
    String encoding) throws UnsupportedEncodingException {
    InputStreamReader inputStreamReader = new InputStreamReader(
    inputStream, encoding);
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
    return bufferedReader;
    }

    /* 设置事件 */
    public void setReaderDataEvent(IReaderData ReaderDataEvent) {
    this.ReaderDataEvent = ReaderDataEvent;
    }

    /* 需要实现IReaderData */
    public void ReaderData(BufferedReader bufferedReader) throws IOException {
    ReaderData(bufferedReader, true);
    }

    /* 需要实现IReaderData */
    public void ReaderData(BufferedReader bufferedReader, Boolean isCloseStream)
    throws IOException {
    if (this.ReaderDataEvent == null) {
    return;
    }
    int bufLen=1024 * 4;
    char[] buf = new char[bufLen];
    int len = -1;
    while ((len = bufferedReader.read(buf)) != -1) {
    if (len == bufLen) {
    ReaderDataEvent.ReaderDatas(buf);
    } else {
    char[] lastbuf = new char[len];
    System.arraycopy(buf, 0, lastbuf, 0, len);
    ReaderDataEvent.ReaderDatas(lastbuf);
    }
    }
    this.ReaderDataEvent.FinishReader();
    if (isCloseStream) {
    bufferedReader.close();
    }
    }

    }

    调用:

    FileSystem fileSystem = new FileSystem(FileSystem.getSystemPath(),
    "test.txt");
    fileSystem.setReaderDataEvent(new ReaderData());
    try {
    fileSystem
    .WriteStreamToFile(fileSystem.StringToStream("我是EvanLee"));

    fileSystem.ReaderData(fileSystem.GetBufferedReader(fileSystem
    .ReadFileToStream()));
    } catch (Exception e) {
    e.printStackTrace();
    }
        public class ReaderData implements IReaderData {

    @Override
    public void ReaderDatas(char[] buf) {
    charList.add(buf);
    // 读取的数据
    Log.d("msg", String.valueOf(buf));
    System.out.println(buf);
    }

    @Override
    public void FinishReader() {
    //TODO
    }
    }


     

  • 相关阅读:
    关于android:screenOrientation="portrait"等
    《第一行代码》学习笔记44-位置服务(2)
    《第一行代码》学习笔记43-位置服务(1)
    《第一行代码》学习笔记42-网络(3)
    《第一行代码》学习笔记41-网络(2)
    spring JdbcTemplate如何返回多个结果集
    Python环境安装(Windows环境)
    C#使用 SharpSSH
    SqlDataReader生成动态Lambda表达式
    DataTable 转实体
  • 原文地址:https://www.cnblogs.com/magic_evan/p/2230916.html
Copyright © 2020-2023  润新知