android中实现向sd卡中续写文件的问题:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中实现向sd卡中续写文件的问题:相关的知识,希望对你有一定的参考价值。

就是我的socket接收文件时,由于文件较大,一次接收不完,分多次接收,每接收一次就往SD卡中写一次。但是,我发现用write写时都是把之前的覆盖掉了,想问一下android中有没有实现续写文件的方法。

用RandomAccessFile 访问你要写的文件,调用seek方法将写指针调整到已经写入的数据位置后面再继续write新数据,每写入一段数据记得保存写入的位置,方便断点续传的时候指定读取源文件位置和写本地文件的偏移位置。 参考技术A 你读取的时候可以放到STRINGBUFFER 里面,应该就没有问题了 参考技术B 你分多次发送和分多次接受,应该是一个道理。。都要有一个position。。你从上次记录的position开始读写操作哈。。

如何在android中获取存储在sd卡中的文件名

【中文标题】如何在android中获取存储在sd卡中的文件名【英文标题】:how to get the file names stored in sd card in android 【发布时间】:2011-06-01 11:10:15 【问题描述】:

我在 SD 卡中有一个文件夹,其中包含多个文件。 现在我需要获取这些文件的名称。 有人知道如何获取存储在 sd 卡中的文件名吗?

任何帮助将不胜感激。 非常感谢。

【问题讨论】:

【参考方案1】:

Environment.getExternalStorageDirectory 会给你一个与 SDCARD 对应的File。然后你只需要使用File 方法。

应该是这样的:

File sdCardRoot = Environment.getExternalStorageDirectory();
File yourDir = new File(sdCardRoot, "yourpath");
for (File f : yourDir.listFiles()) 
    if (f.isFile())
        String name = f.getName();
        // make something with the name

一点建议:来自 KitKat 及更高版本,这需要READ_EXTERNAL_STORAGE 权限。

【讨论】:

你查过list()listFiles()这两个方法的源码吗?它们之间有一点区别。有趣的是知道差异是什么。 @Martjin :在内部,listFiles 使用 list 创建文件名列表,并创建 File 对象。但由于 OP 只想拥有文件,我更喜欢使用 listFiles @ValentinRocher 如何获取文件路径? - 文件.getpath() ?还是有其他方法? 你可能会使用 getCanonicalPath() 或类似的东西,看看 File javadoc【参考方案2】:

在 Android 5.0 Lollipop 中,我发现我们需要在 Manifest 中添加权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

如果没有,我们在 sdcard 中看不到任何文件。我需要一个小时才能找到这个!

【讨论】:

【参考方案3】:

如果您想从 FOLDER 的特定路径检索所有文件和文件夹,请使用此代码,它将帮助您

String path="/mnt/sdcard/dcim";  //lets its your path to a FOLDER

String root_sd = Environment.getExternalStorageDirectory().toString();
File file = new File(path) ;       
File list[] = file.listFiles();
  for(File f:list)
    
       filename.add(f.getName());//add new files name in the list
                   

【讨论】:

【参考方案4】:
 ArrayList<String>nameList = new ArrayList<String>();
 File yourDir = new File(Environment.getExternalStorageDirectory(), "/myFolder");
 for (File f : yourDir.listFiles()) 
 
    if (f.isFile())
    
       nameList.add(f.getName);
    


【讨论】:

【参考方案5】:
/**
 * Return list of files from path. <FileName, FilePath>
 *
 * @param path - The path to directory with images
 * @return Files name and path all files in a directory, that have ext = "jpeg", "jpg","png", "bmp", "gif"  
 */
private List<String> getListOfFiles(String path) 

    File files = new File(path);

    FileFilter filter = new FileFilter() 

        private final List<String> exts = Arrays.asList("jpeg", "jpg",
                "png", "bmp", "gif");

        @Override
        public boolean accept(File pathname) 
            String ext;
            String path = pathname.getPath();
            ext = path.substring(path.lastIndexOf(".") + 1);
            return exts.contains(ext);
        
    ;

    final File [] filesFound = files.listFiles(filter);
    List<String> list = new ArrayList<String>();
    if (filesFound != null && filesFound.length > 0) 
        for (File file : filesFound) 
           list.add(file.getName());
        
    

    return list;

这将为您提供文件夹中的图像列表。您可以修改代码以获取所有文件。

【讨论】:

以上是关于android中实现向sd卡中续写文件的问题:的主要内容,如果未能解决你的问题,请参考以下文章

android模拟器sd卡中使用

如何从服务器下载文件并将其保存在 Android SD 卡中的特定文件夹中?

Android,SD卡中的mappstore 文件夹是啥 ?

Android程序函数 将assets文件夹下的文件复制到手机的sd卡中(包括子文件夹)

记录尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能

Android:如何将录制的音频存储在 SD 卡中