`
androidssh
  • 浏览: 115793 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android Txt文本读写类源代码

阅读更多
   Android系统内部提供了一个不错的txt文本读写类,但目前并没有公开提供给标准的SDK,FileUtils类的源代码如下,可以很好的操作Linux下的文本文件。

public class FileUtils
{
    public static final int S_IRWXU = 00700;
    public static final int S_IRUSR = 00400;
    public static final int S_IWUSR = 00200;
    public static final int S_IXUSR = 00100;

    public static final int S_IRWXG = 00070;
    public static final int S_IRGRP = 00040;
    public static final int S_IWGRP = 00020;
    public static final int S_IXGRP = 00010;

    public static final int S_IRWXO = 00007;
    public static final int S_IROTH = 00004;
    public static final int S_IWOTH = 00002;
    public static final int S_IXOTH = 00001;
   
     public static final class FileStatus {
        public int dev;
        public int ino;
        public int mode;
        public int nlink;
        public int uid;
        public int gid;
        public int rdev;
        public long size;
        public int blksize;
        public long blocks;
        public long atime;
        public long mtime;
        public long ctime;
    }
   

    public static native boolean getFileStatus(String path, FileStatus status);

    private static final Pattern SAFE_FILENAME_PATTERN = Pattern.compile("[\\w%+,./=_-]+");


    public static boolean copyFile(File srcFile, File destFile) {
        boolean result = false;
        try {
            InputStream in = new FileInputStream(srcFile);
            try {
                result = copyToFile(in, destFile);
            } finally  {
                in.close();
            }
        } catch (IOException e) {
            result = false;
        }
        return result;
    }
   

    public static boolean copyToFile(InputStream inputStream, File destFile) {
        try {
            if (destFile.exists()) {
                destFile.delete();
            }
            OutputStream out = new FileOutputStream(destFile);
            try {
                byte[] buffer = new byte[4096];
                int bytesRead;
                while ((bytesRead = inputStream.read(buffer)) >= 0) {
                    out.write(buffer, 0, bytesRead);
                }
            } finally {
                out.close();
            }
            return true;
        } catch (IOException e) {
            return false;
        }
    }

     public static boolean isFilenameSafe(File file) {
        return SAFE_FILENAME_PATTERN.matcher(file.getPath()).matches();
    }


    public static String readTextFile(File file, int max, String ellipsis) throws IOException {
        InputStream input = new FileInputStream(file);
        try {
            long size = file.length();
            if (max > 0 || (size > 0 && max == 0)) { 

                if (size > 0 && (max == 0 || size < max)) max = (int) size;
                byte[] data = new byte[max + 1];
                int length = input.read(data);
                if (length <= 0) return "";
                if (length <= max) return new String(data, 0, length);
                if (ellipsis == null) return new String(data, 0, max);
                return new String(data, 0, max) + ellipsis;
            } else if (max < 0) {  // "tail" mode: keep the last N
                int len;
                boolean rolled = false;
                byte[] last = null, data = null;
                do {
                    if (last != null) rolled = true;
                    byte[] tmp = last; last = data; data = tmp;
                    if (data == null) data = new byte[-max];
                    len = input.read(data);
                } while (len == data.length);

                if (last == null && len <= 0) return "";
                if (last == null) return new String(data, 0, len);
                if (len > 0) {
                    rolled = true;
                    System.arraycopy(last, len, last, 0, last.length - len);
                    System.arraycopy(data, 0, last, last.length - len, len);
                }
                if (ellipsis == null || !rolled) return new String(last);
                return ellipsis + new String(last);
            } else { 
                ByteArrayOutputStream contents = new ByteArrayOutputStream();
                int len;
                byte[] data = new byte[1024];
                do {
                    len = input.read(data);
                    if (len > 0) contents.write(data, 0, len);
                } while (len == data.length);
                return contents.toString();
            }
        } finally {
            input.close();
        }
    }
}
分享到:
评论

相关推荐

    Android Txt文本读写 源代码.

    在Android开发中,进行TXT文本读写时,开发者通常会使用`BufferedReader`和`BufferedWriter`等流类,结合`FileReader`和`FileWriter`进行操作。例如,`BufferedReader`可以从文件中逐行读取,而`BufferedWriter`可以...

    Android TXT阅读器 源代码

    而TXT阅读器作为最基础的文本阅读应用之一,其源代码的学习对于Android开发者来说,是深入理解Android系统、UI设计以及文件处理等方面的重要途径。本文将围绕"Android TXT阅读器"的源代码进行详细解析,探讨其实现的...

    Android代码-文本阅读器源代码.zip

    【Android代码-文本阅读器源代码.zip】是一个包含Android平台上的文本阅读器应用程序的源代码。这个项目可能是一个实现文本查看、编辑和管理功能的软件,对于开发者来说,这是一个了解Android应用开发,尤其是文本...

    Android文本阅读器源代码.zip源码资源下载

    在本资源中,我们主要关注的是一个Android平台上...通过深入研究这个源代码,开发者可以学习到如何构建一个功能完备的Android文本阅读器应用,同时也能提升在Android平台上处理文本、网络请求和文件操作等方面的能力。

    Android文本阅读器源代码.rar

    在本项目中,我们关注的是一个名为"Android文本阅读器源代码"的压缩包,它包含了一款Android应用的源代码。这个应用显然是为在Android设备上阅读文本文件而设计的,可能是PDF、TXT或其他格式。这个源码是开发者学习...

    Android源码——文本阅读器源代码.7z

    这个"Android源码——文本阅读器源代码.7z"压缩包包含了一个实现这一功能的应用程序的源代码,这对于Android开发者来说是一个极好的学习资源。让我们详细探讨一下这个项目可能涉及的关键知识点。 1. **Android SDK*...

    android通过NFC读写数据

    这些文件和目录表明,这是一个Android工程的源代码结构,其中可能包含了实现NFC读写功能的相关代码。开发者可能需要分析`src`目录下的Java类,查找与NFC相关的类和方法,如读取和写入标签的逻辑。

    android开发新浪微博客户端源代码

    本项目"android开发新浪微博客户端源代码"提供了完整的实现方案,让我们一起深入探讨其中的关键知识点。 1. **Android应用基本架构**: Android应用通常由多个组件构成,如Activity(活动)、Service(服务)、...

    文件读写源代码

    10. **源代码分析**:`Filedemo`可能是包含以上操作的示例代码,具体实现可能包括打开文件选择器、读取文件内容、写入文件内容等功能。分析这个源码可以帮助理解Android文件操作的实际应用。 通过理解和掌握这些...

    android txt文本阅读器源码

    本项目名为"android txt文本阅读器源码",提供了完整的源代码,方便开发者参考和学习。 首先,我们要了解Android应用的基本组成部分。在Android中,每个应用都是由一系列的组件构成,包括Activity(活动)、Service...

    安卓文本文件编辑器(aide试作版)源代码

    【安卓文本文件编辑器(aide试作版)源代码】是一个专为安卓平台设计的轻量级文本编辑器,由开发者使用AIDE(Android IDE)在手机上编写完成。AIDE是一款集成开发环境,允许开发者直接在移动设备上进行安卓应用的...

    完整的安卓画板源代码 Android小画板

    "源代码"标签意味着我们有程序的原始编程文本,可以直接查看和修改,这对于学习Android开发或定制画板应用的人来说非常有价值。 【压缩包子文件的文件名称列表】 Sketchpad-1.0可能是这个画板应用的版本号,通常在...

    60个android经典入门程序源代码

    "60个Android经典入门程序源代码"提供了一个绝佳的学习资源,涵盖了各种核心概念和技术。这些源代码实例是初学者掌握Android编程的关键步骤,也是进阶开发者巩固基础的宝贵资料。下面将详细阐述这些源代码中可能包含...

    Android文件管理器源代码

    2. **文件操作**:源代码中会包含`java.io`和`java.nio`包下的类,例如`File`、`FileInputStream`、`FileOutputStream`等,用于执行读写文件的操作。同时,可能会使用到`ContentResolver`和`Uri`来处理多媒体文件。 ...

    android 应用开发入门源代码

    通过这些源代码,你可以学习如何读写数据,以及如何在不同的Activity之间共享数据。 网络通信是现代应用不可或缺的一部分,这里可能包含异步HTTP请求的实现,如使用HttpURLConnection或第三方库如Volley、Retrofit...

    android蓝牙聊天源代码

    "android蓝牙聊天源代码"项目提供了一个很好的实例,帮助开发者了解如何在Android应用程序中实现蓝牙聊天功能。以下将详细介绍这个项目的相关知识点: 1. **Android Bluetooth API**: Android提供了`...

    移动开心网 Android手机版源代码

    移动开心网Android手机版源代码是针对想要学习或深入理解Android应用程序开发,特别是社交网络服务(SNS)应用的开发者的一份宝贵资源。这份源代码涵盖了移动应用开发的基础和特定功能,如用户登录、内容展示、互动...

    安卓Android源码——小米便签源代码分享.zip

    小米便签是小米公司为Android系统开发的一款笔记类应用,它允许用户方便地创建、编辑和管理文本笔记。通过分析这份源代码,我们可以深入理解Android应用开发的细节,特别是关于UI设计、数据存储、事件处理以及性能...

    android串口调试助手源代码

    在深入研究这个源代码时,开发者会学习到如何在Android中设置串口连接、读写数据、处理中断事件以及如何在用户界面上显示通信结果。此外,源代码还可能包含错误处理和兼容性策略,这对于跨不同设备和Android版本的...

    Android NFC 读写模式源码

    - `NfcAdapter`:这是Android系统中的核心类,用于管理NFC功能。开发者可以通过`NfcAdapter.getDefaultAdapter(Context)`获取到默认的NFC适配器。 - `NdefMessage`和`NdefRecord`:`NdefMessage`用于存储一组`...

Global site tag (gtag.js) - Google Analytics