从mediastore的uri中获得文件名和路径

我有一个从mediastore图像选择返回的onActivityResult,我可以用下边的代码给一个图像获得一个URI:

 Uri selectedImage = data.getData();

把它转换成一个字符串给这个:

content://media/external/images/media/47

或者转换成一个路径给这个::

/external/images/media/47

然后我好像不能找到一个方法把它转换成一个绝对路径,因为我想要把一个图片加载成位图而不用四处复制。我知道这个可以用URI和内容解析器来做,但是这似乎要打破了要一直重启手机,我猜MediaStore不能保持它的在不断重启之间相同的编号。

3个回答

public String getRealPathFromURI(Uri contentUri) {
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

不要试图在文件系统中找一个uri,这个在数据库中找东西会很慢。

你可以通过提供一个输入流到factory从一个uri得到一个位图,就像你将给文件给factory一样:

InputStream is = getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(is);
is.close();

mActivity.managedQuery()现在已经不赞成用了。下边是代码

private String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    CursorLoader loader = new CursorLoader(mContext, contentUri, proj, null, null, null);
    Cursor cursor = loader.loadInBackground();
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}
qq_26734607
依山观澜 回复liwen320922: 层主解决了么?我想获取office文件路径,怎么写?
3 年多之前 回复
liwen320922
liwen320922 回复who52023: 这个是得到图片的,那我想得到的所有的,不单单是图片,该怎么写
接近 4 年之前 回复
liwen320922
liwen320922 这个是得到图片的,那我想得到的所有的,不单单是图片,该怎么写
接近 4 年之前 回复
ding630345720
ding630345720 为啥我用这段代码不管用啊
接近 4 年之前 回复
who52023
who52023 回复Jean0626: 上下文
接近 4 年之前 回复
Jean0626
Jean0626 什么是mContext
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
从 MediaStore 中删除一个文件条目的问题
我想从一个MediaStore中删除一个文件条目,使用的下面的代码: noOfEntriesDeleted = contentResolver.delete(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, "_data=" + originalFile, null); 但是没有实现我所要的功能,输出下面的错误: 08-03 16:00:46.850: I/SqliteDatabaseCpp(5124): sqlite returned: error code = 1, msg = near "/": syntax error, db=xxx 08-03 16:00:46.860: E/DatabaseUtils(5124): Writing exception to parcel 08-03 16:00:46.860: E/DatabaseUtils(5124): android.database.sqlite.SQLiteException: near "/": syntax error: , while compiling: DELETE FROM files WHERE media_type=2 AND (_data=/mnt/sdcard/tmp/FILE_154050.3gp) 这是什么原因呢?
利用ContentResolver从MediaStore中获取的歌曲名是乱码的,要如何解决?
利用ContentResolver从MediaStore中获取的歌曲名是乱码的,要如何解决?
怎么使用MediaStore获取SD卡中Camera下的照片
怎么使用MediaStore获取SD卡中DCIM/Camera目录下的照片?我使用 ` Cursor track = mContext.getContentResolver().query( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);` 得到的是SD卡中全部的图片,可是我只想获取到DCIM/Camera目录下的图片应该怎么办?
安卓URI文件获取绝对路径
我想在安卓里获取一个word文档,后缀名为.doc的Uri的绝对路径,但是不能成功, 然而当我获取一个图片的时候,没有任何问题,获取那些常规的媒体文件也没有问题,就是获取比如QQ浏览器里的文档的时候,就无法获取绝对路径了,只能获取到文件名 ``` private File getFileFromContentUri(Uri contentUri, Context context) { if (contentUri == null) { return null; } File file = null; String filePath; String fileName; String[] projection = { MediaStore.Files.FileColumns.DATA }; ContentResolver contentResolver = context.getContentResolver(); Cursor cursor = contentResolver.query(contentUri, projection, null, null, null); if (cursor != null) { cursor.moveToFirst(); filePath = cursor.getString(0); cursor.close(); System.out.println(filePath+"????"); if (!TextUtils.isEmpty(filePath)) { file = new File(filePath); } if (!file.exists() || file.length() <= 0 || TextUtils.isEmpty(filePath)) { filePath = getPathFromInputStreamUri(context, contentUri, "0"); } if (!TextUtils.isEmpty(filePath)) { file = new File(filePath); } } return file; } ```
通过 MediaStore.Images.Media 如何获取路径?
我使用下面的代码获取 sd card 相片的 bitmap。 String[] projection = {MediaStore.Images.Media._ID,MediaStore.Images.Media.DATA}; Cursor cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Media._ID); int count = cursor.getCount(); int image_column_index = cursor.getColumnIndex(MediaStore.Images.Media._ID); path = new String[count]; bm = new Bitmap[count]; for (int i = 0; i < count; i++) { cursor.moveToPosition(i); int id = cursor.getInt(image_column_index); path[i] //How to get path bt[i] = MediaStore.Images.Thumbnails.getThumbnail(getApplicationContext().getContentResolver(), id, MediaStore.Images.Thumbnails.MICRO_KIND, null); } 我已经获得所有照片的 thumbnail。但是我想想获取绝对路径。要改哪些代码?
Android 从网络下载文件,使用MediaStore扫描mp3文件
是这样的,我做了一个简单的音乐播放器,其中使用了MediaStore获取手机里的mp3文件,并把mp3文件信息放到一个ListView中作为歌曲列表。 还有一个功能就是通过网络下载mp3文件。但是下载完成之后,歌曲列表里却不会显示新下载的歌曲信息,我必须把手机重启之后新下载的歌曲才会显示到歌曲列表里面。 我知道系统是自动存储了手机里所有的音乐文件信息,是不是新下载的歌曲没有被添加到它的数据库中呢?所以重启手机之后才能生效? 但是我通过手机默认浏览器下载的歌曲,却能立即显示到歌曲列表里面。所以我想可能是我自己写的网络文件下载功能不够完善,没有能让系统注意到我已经下载的mp3文件。 所以有没有人遇到过同样的问题呢?或者有解决方法呢?求解~~
求助关于android中使用contentprovider通过mediastore访问数据库
不插sd卡难道就不行么?MediaStore.Audio.Media.EXTERNAL_CONTENT_URI难道只能是sd卡上的音乐文件么 ``` ContentResolver cr=getContentResolver(); Cursor c=cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null); ```
Android获取到了手机音频文件的信息,怎么转换成uri
我已经用getContentResolver().query()方法获取到了歌曲名和路径,怎么把这些信息转换成uri用于MediaPlayer播放
关于往MediaStore中插入数据的问题
我保存一张图片到SD卡上,但是其余的软件比如QQ这些的添加图片是直接调用MediaStore的,所以这是要同时添加数据到MediaStore中,但为什么老是失败 代码如下 ![图片说明](https://img-ask.csdn.net/upload/201503/17/1426560721_507529.jpg) 这么写有问题吗??不成功
通过cursor 获取音乐文件返回空值
通过文件名可以获取sdcard的音文件 而 Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); 返回空 之前的虚拟机是没问题的,新建的虚拟机就出现这种情况了
android 开发中文件名错误
Integer val = myReceipt.receiptId ; String fileName = "image" + "_" + title.getText().toString()+"_" + val.toString(); photo = this.createTemporaryFile(fileName, ".jpg"); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); uriOfPhoto = Uri.fromFile(photo); startActivityForResult(intent, RESULT_CAMERA_SELECT); } } private File createTemporaryFile(String part, String ext) throws Exception { File tempDir = new File (Environment.getExternalStorageDirectory() + "/Catch All Keeper/Receipts"); if(!tempDir.exists()) { tempDir.mkdir(); } tempDir.canWrite(); return File.createTempFile(part, ext, tempDir); } }); 我用上面的代码应该给出文件名image_title_val,但是却给出一个奇怪的名字image_title_(some random numbers).jpg。 为什么出现这个问题?
GridView重新命名文件名
我使用下面的代码在 GridView 中 onCreate()方法中显示照片: String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.DATA}; Cursor cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Media._ID); int count = cursor.getCount(); int image_column_index = cursor.getColumnIndex(MediaStore.Images.Media._ID); int image_path_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA); fd.clearPhonePhoto(); int i; for(i = 0; i < count; i++) { cursor.moveToPosition(i); int id = cursor.getInt(image_column_index); String p = cursor.getString(image_path_index); Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(getApplicationContext().getContentResolver(), id, MediaStore.Images.Thumbnails.MICRO_KIND, null); FilePath.add(p); FileThumb.add(b); } b4 = (Button)findViewById(R.id.btn_4); b4.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int i; for(i = 0; i < Check.length; i++) { if(Check[i]) { AlertDialog.Builder renameDialog = new AlertDialog.Builder(PhonePhotoListActivity.this); renameDialog.setTitle("Rename"); final EditText name = new EditText(AActivity.this); name.setText(FilePath.get(i).substring(FilePath.get(i).lastIndexOf("/") + 1)); //set old file name renameDialog.setView(name); final String oripath = FilePath.get(i); renameDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { rename(oripath, name.getText().toString()); Intent it = new Intent(AActivity.this, AActivity.class); it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(it); } }); renameDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) {} }); renameDialog.show(); } } } }); gv = (GridView)findViewById(R.id.phone_photo); AAdapter = new AAdapter(this, FilePath, FileThumb); gv.setAdapter(AAdapter); rename()方法: public void rename(String ori, String edit) { File rename = new File(ori); String newpath = ori.substring(0, ori.lastIndexOf("/") + 1) + edit; rename.renameTo(new File(newpath)); } 第一次,dialog显示正确的文件名,也能重新命名文件名。但是第二次,dialog还是显示旧的文件名,也没有改过名称,也不能重命名。我重启程序还是显示旧的文件名。 如何处理这个问题呢?
为什么用Android的MediaStore查不到SD卡的音乐,权限里已经设置了
``` import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.os.Bundle; import android.provider.MediaStore; import android.widget.ListView; import android.widget.SimpleAdapter; public class MainActivity extends Activity { private ListView list; private List<Map<String, String>> musicList = new ArrayList<Map<String, String>>(); private SimpleAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); //musicList=loadSongs(); list=(ListView) super.findViewById(R.id.listView1); adapter = new SimpleAdapter(getApplicationContext(), musicList, R.layout.item, new String[] { "name", "artist", "time", "data", "id" }, new int[] { R.id.name, R.id.songer, R.id.time, R.id.path, R.id.musicRating }); list.setAdapter(adapter); } public List<Map<String, String>> getmusic(){ ContentResolver musicResolver = this.getContentResolver(); Cursor cursor = /*getContentResolver()*/ musicResolver .query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME }, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER); if (cursor != null && cursor.moveToFirst()) { do { /*String mName = cursor.getString(0); long mTime = cursor.getLong(1); String mAlbum = cursor.getString(2); String mArtist = cursor.getString(3); long mId = cursor.getLong(4); String mData = cursor.getString(5); */ String mName =cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)); int mTime=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION)); String mAlbum=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM)); String mArtist=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)); int mId=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID)); String mData=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)); String mDisplay = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME)); HashMap a = new HashMap(); a.put("name", mName); a.put("time", mTime); //a.put("time1", mTime); a.put("album", mAlbum); a.put("artist", mArtist); a.put("id", mId); a.put("data", mData); a.put("display", mDisplay); musicList.add(a);//ArrayList System.out.println(mName + "-->" + mTime + "---->>--" + mData); } while (cursor.moveToNext()); } if (!cursor.isClosed()) { cursor.close(); } return musicList; } } ```
Android中选择图片后获得路径的方法
最近在工作中遇到这个问题,我的应用中有个功能,点击某Imagview进入手机图库,点击图片后返回Activity获得所选图片的路径,在代码中提供了下面的方法: public String getRealPathFromURI(Uri contentUri) { String res = null; String[] proj = {MediaStore.Images.Media.DATA}; // Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null); CursorLoader loader = new CursorLoader(this, contentUri, proj, null, null, null); // Cursor cursor= managedQuery(contentUri, proj, null, null, null); Cursor cursor=loader.loadInBackground(); Log.i("msg","=============>>>>>>>>"+contentUri); Log.i("msg","cursor=============>>>>>>>>"+cursor.toString()); if (cursor.moveToFirst()) { int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); Log.i("msg","column_index=============>>>>>>>>"+column_index); res = cursor.getString(column_index); Log.i("msg","res=============>>>>>>>>"+res); } cursor.close(); return res; } 但是运行后返回值为null,百思不得其解,Logcat的消息如下: 12-03 14:18:31.555 1788-1788/dev.sunshine.song.driver I/msg: ==============>>>>>>>>>content://com.android.providers.media.documents/document/image%3A245050 12-03 14:18:31.585 1788-1788/dev.sunshine.song.driver I/msg: cursor=============>>>>>>>>android.content.ContentResolver$CursorWrapperInner@43591110 12-03 14:18:31.585 1788-1788/dev.sunshine.song.driver I/msg: column_index=============>>>>>>>>0 12-03 14:18:31.585 1788-1788/dev.sunshine.song.driver I/msg: res=============>>>>>>>>null 12-03 14:18:31.620 1788-1788/dev.sunshine.song.driver I/msg: path====================>>>>>>>>>>null 我也试过用IO流的方式获取位图,也的确能显示,但因为此方法得到的路径在程序的其他地方还会调用,所以不好绕过,所以请论坛大神帮忙看看这个方法哪有问题?
新手问android拍照保存后立即从Media.EXTERNAL_CONTENT_URI中查不到信息
调用系统拍照程序,并用putExtra(MediaStore.EXTRA_OUTPUT,path)保存了,在file explorer 也能看到图片,但是从Media.EXTERNAL_CONTENT_URI查不到信息,返回后在执行一次才能查到上次保存的图片的信息,本次 保存的还是查不到
在android 5.5和6.0上面获取图片路径问题
String []imgs1={MediaStore.Images.Media.DATA};//将图片URI转换成存储路径 Cursor cursor = getContentResolver().query(uri, imgs1, null, null, null); if(cursor.moveToFirst()){ //最后根据索引值获取图片路径 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); path = cursor.getString(column_index); save(); } cursor.close(); 在模拟器和4.4 5.1 版本都可以正常运行,在6.0和5.5报错
Android中如何读入文件夹中的图片文件并得到该图片的名称
___**补充内容,我按照下面的方式读取了一张图片,能不能得到这个图片的名字?比如图片的名字为“XD0001.jpg”,如何得到“XD0001"这个字符串?**___ 我现在有一个程序,是从相册选择一张图片后裁剪,保存然后才能进入后面的处理,我现在想把裁剪功能去掉,并想实现读取文件夹中的所有图片,并能一张张的进行处理,我该怎么改? 现在的代码是: 这个是onActivityResult需要改的部分代码 ``` protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); switch(requestCode) { case PHOTO_GET_PHOTO_DATA : try { System.out.println("从相册获得图片"); ContentResolver localContentResolver = getContentResolver(); Uri originalUri = intent.getData(); this.mContent = readStream(localContentResolver.openInputStream(Uri.parse(originalUri.toString()))); if (getPicFromBytes(this.mContent, null) == null) break; System.out.println("开始裁剪2"); startPhotoZoom(originalUri);//开始图片剪裁 System.out.println("裁剪结束2"); //获取文件的绝对路径 String originalUri1 = originalUri.getSchemeSpecificPart().substring(2); System.out.println("originalUri1="+originalUri1); if(originalUri1 != null) { this.myApp.setState(originalUri1); } else { String[] proj = {MediaStore.Images.Media.DATA}; @SuppressWarnings("deprecation") Cursor cursor = this.managedQuery(originalUri, proj, null, null, null); if(cursor==null) return; int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); this.myApp.setState(cursor.getString(column_index)); } //System.out.println("fileName:" + this.fileName); } catch (Exception localException) { System.out.println("E:" + localException.getMessage()); } break; case PHOTO_PICKED_WITH_DATA : if(intent==null) break; Bundle extras = intent.getExtras(); if(extras==null) break; this.photo = extras.getParcelable("data"); if(photo==null) break; this.showImage.setImageBitmap(this.photo); this.showImage.setVisibility(0); this.phFlag = true; this.result.setText(""); this.resultStr = ""; ``` 下面是裁剪函数; ``` public void startPhotoZoom(Uri paramUri) { Intent localIntent = new Intent("com.android.camera.action.CROP"); localIntent.setDataAndType(paramUri, "image/*"); localIntent.putExtra("crop", "true"); localIntent.putExtra("aspectX", 4); localIntent.putExtra("aspectY", 3); localIntent.putExtra("outputX", WIDTH); localIntent.putExtra("outputY", HEIGHT); localIntent.putExtra("return-data", true); startActivityForResult(localIntent, PHOTO_PICKED_WITH_DATA); } ``` 我的主要问题是去掉裁剪函数,最后有个startActivityForResult中intent的传递用什么代替,还有就是怎么读取文件夹里所有的图片,然后可以一张一张的处理。
Android如何把获取到音乐文件的数据用simpleAdapter填充到listview列表当中去
* 专门创建一个类用来获取歌曲的信息 */ public class AudioUtils { /* * * */ //创建一个音乐实体类的实例的方法 public static ArrayList<Song> getAllSongs(Context context) { // 初始化一个音乐实体类集合对象,用来存储下面获取到的音乐信息 ArrayList<Song> songs = null; // 通过内容提供者的查询接口来获取到手机里面的音乐文件 Cursor cursor = context.getContentResolver().query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, // 这里新建一个数组告诉提供者要返回的列 new String[] { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.YEAR, MediaStore.Audio.Media.MIME_TYPE, MediaStore.Audio.Media.SIZE, MediaStore.Audio.Media.DATA }, //设置查询的条件 MediaStore.Audio.Media.MIME_TYPE + "=? or " + MediaStore.Audio.Media.MIME_TYPE + "=?", new String[] { "audio/mpeg", "audio/x-ms-wma" }, null); // 实例化一个Song数组实体类对象 songs = new ArrayList<Song>(); if (cursor.moveToFirst()) { //当光标移动到第一行时,执行下面的方法 Song song = null;//新建一个歌曲类实例化对象,把cursor读出来的信息文件,存进去 do { // 实例化Song类对象 song = new Song(); //在把获取到的值通过实体类对象赋值到实体类当中去 // 文件名 song.setFileName(cursor.getString(1)); // 歌曲名 song.setTitle(cursor.getString(2)); // 时长 song.setDuration(cursor.getInt(3)); // 歌手名 song.setSinger(cursor.getString(4)); // 专辑名 song.setAlbum(cursor.getString(5)); // 年代 if (cursor.getString(6) != null) { song.setYear(cursor.getString(6)); } else { song.setYear("未知"); } // 歌曲格式 if ("audio/mpeg".equals(cursor.getString(7).trim())) { song.setType("mp3"); } else if ("audio/x-ms-wma".equals(cursor.getString(7).trim())) { song.setType("wma"); } // 文件大小 if (cursor.getString(8) != null) { float size = cursor.getInt(8) / 1024f / 1024f; song.setSize((size + "").substring(0, 4) + "M"); } else { song.setSize("未知"); } // 文件路径 if (cursor.getString(9) != null) { song.setFileUrl(cursor.getString(9)); } //把获得到的数据传输到ArrayList列表当中去 songs.add(song); // 当光标移动到下一行的时候,继续循环,当获取到的内容没有时,光标停止移动,不满足循环跳出去 } while (cursor.moveToNext()); //关闭光标释放资源 cursor.close(); } return songs; } 上面是获取音乐文件的代码,音乐实体类,主界面上面就是一个一个Button,点击的时候把获取到的数据显示到下面的按钮中间去
为什么 cusor 是 null?
我使用下面的代码来获取图像路径。并且保存到字符串数组路径中。 String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.DATA}; Cursor cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Media._ID); int count = cursor.getCount(); int image_column_index = cursor.getColumnIndex(MediaStore.Images.Media._ID); int image_path_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA); int i; for(i = 0; i < count; i++) { cursor.moveToPosition(i); int id = cursor.getInt(image_column_index); pat[i[ = cursor.getString(image_path_index); } 然后我用下面的代码来获取缩略图。 int i; for(i = 0; i < count; i++) { String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA}; Cursor cursor = act.managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, MediaStore.Images.Media.DATA + "=?", new String[] {path[i]}, MediaStore.Images.Media._ID); } 但是当文件数量很大时(差不多1000个文件),cursor就显示null。我确信它不是由路径名称导致的错误,那么是什么原因导致的?
Kafka实战(三) - Kafka的自我修养与定位
Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform) Kafka是LinkedIn公司内部孵化的项目。LinkedIn最开始有强烈的数据强实时处理方面的需求,其内部的诸多子系统要执行多种类型的数据处理与分析,主要包括业务系统和应用程序性能监控,以及用户行为数据处理等。 遇到的主要问题: 数据正确性不足 数据的收集主要...
volatile 与 synchronize 详解
Java支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。 volatile 关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
GitHub开源史上最大规模中文知识图谱
近日,一直致力于知识图谱研究的 OwnThink 平台在 Github 上开源了史上最大规模 1.4 亿中文知识图谱,其中数据是以(实体、属性、值),(实体、关系、实体)混合的形式组织,数据格式采用 csv 格式。 到目前为止,OwnThink 项目开放了对话机器人、知识图谱、语义理解、自然语言处理工具。知识图谱融合了两千五百多万的实体,拥有亿级别的实体属性关系,机器人采用了基于知识图谱的语义感...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
微信支付崩溃了,但是更让马化腾和张小龙崩溃的竟然是……
loonggg读完需要3分钟速读仅需1分钟事件还得还原到昨天晚上,10 月 29 日晚上 20:09-21:14 之间,微信支付发生故障,全国微信支付交易无法正常进行。然...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
相关热词 基于c#波形控件 c# 十进制转十六进制 对文件aes加密vc# c#读取栈中所有的值 c# rsa256加密 好 学c# 还是c++ c# 和java的差距 c# curl网络框架 c# https证书请求 c# 中崎
立即提问