打开文件管理器:
- android :打开手机文件管理
-
private static final int REQUEST_CODE = 1; private String mFileNamePath; private String mJoinData;
-
case R.id.device_id: //打开文件夹选择文件 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); //设置文件选择类型,任意类型 intent.setType("*/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); startActivityForResult(intent, REQUEST_CODE); break;
-
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK) { Uri uri = data.getData(); if ("file".equalsIgnoreCase(uri.getScheme())) { //使用第三方应用打开 Toast.makeText(this, uri.getPath() + "11111", Toast.LENGTH_SHORT).show(); return; } //4.4以后 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) { mFileNamePath = getPath(this, uri); if (mFileNamePath != null) { // do something... readFile(mFileNamePath); } else { Toast.makeText(this, "文件路径异常 222", Toast.LENGTH_SHORT).show(); } Log.d(Tag, "所选择的文件路径: " + mFileNamePath); } else {//4.4以下系统调用方法 Toast.makeText(MainActivity.this, getRealPathFromURI(uri) + "222222", Toast.LENGTH_SHORT).show(); } } } public String getRealPathFromURI(Uri contentUri) { String res = null; String[] proj = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null); if (null != cursor && cursor.moveToFirst()) { ; int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); res = cursor.getString(column_index); cursor.close(); } return res; } /** * 4.4的从Uri获取文件绝对路径 */ @SuppressLint("NewApi") public String getPath(final Context context, final Uri uri) { final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; // DocumentProvider if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { // ExternalStorageProvider if (isExternalStorageDocument(uri)) { final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); final String type = split[0]; if ("primary".equalsIgnoreCase(type)) { return Environment.getExternalStorageDirectory() + "/" + split[1]; } } // DownloadsProvider else if (isDownloadsDocument(uri)) { final String id = DocumentsContract.getDocumentId(uri); final Uri contentUri = ContentUris.withAppendedId( Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); return getDataColumn(context, contentUri, null, null); } // MediaProvider else if (isMediaDocument(uri)) { final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); final String type = split[0]; Uri contentUri = null; if ("image".equals(type)) { contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; } else if ("video".equals(type)) { contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; } else if ("audio".equals(type)) { contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; } final String selection = "_id=?"; final String[] selectionArgs = new String[]{split[1]}; return getDataColumn(context, contentUri, selection, selectionArgs); } } // MediaStore (and general) else if ("content".equalsIgnoreCase(uri.getScheme())) { return getDataColumn(context, uri, null, null); } // File else if ("file".equalsIgnoreCase(uri.getScheme())) { return uri.getPath(); } return null; } /** * Get the value of the data column for this Uri. This is useful for * MediaStore Uris, and other file-based ContentProviders. * * @param context The context. * @param uri The Uri to query. * @param selection (Optional) Filter used in the query. * @param selectionArgs (Optional) Selection arguments used in the query. * @return The value of the _data column, which is typically a file path. */ public String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { Cursor cursor = null; final String column = "_data"; final String[] projection = {column}; try { cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); if (cursor != null && cursor.moveToFirst()) { final int column_index = cursor.getColumnIndexOrThrow(column); return cursor.getString(column_index); } } finally { if (cursor != null) cursor.close(); } return null; } /** * @param uri The Uri to check. * @return Whether the Uri authority is ExternalStorageProvider. */ public boolean isExternalStorageDocument(Uri uri) { return "com.android.externalstorage.documents".equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is DownloadsProvider. */ public boolean isDownloadsDocument(Uri uri) { return "com.android.providers.downloads.documents".equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is MediaProvider. */ public boolean isMediaDocument(Uri uri) { return "com.android.providers.media.documents".equals(uri.getAuthority()); }
- Java :打开PC本地文件管理
// 文件管理器
public void ChooseFileData() {
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JPG&WAV&TXT&WORD&PEM", "jpg", "wav", "txt", "word", "pem");
// "PEM","pem");
chooser.setFileFilter(filter);
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setDialogTitle("请选择文件");
int result = chooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
File mFile = chooser.getSelectedFile();
String mChooseFileName = mFile.getName();
File mAbFile = chooser.getCurrentDirectory();
String mAbfilepath = mAbFile.getAbsolutePath();
// D:\Test\lektkey\lekt1a-private.pem
mFileNamePath = mAbfilepath + "\\" + mChooseFileName;
System.out.println("所选择的文件全路径。。。。。" + mFileNamePath);
// 路径非空判断
if (mFileNamePath != null || mFileNamePath.length() > 0) {
readFile(mFileNamePath);
} else {
JOptionPane.showMessageDialog(mEntryButton, "文件路径异常:", "错误",
JOptionPane.INFORMATION_MESSAGE);
System.out.println("文件路径异常");
}
System.out.println("所选择的文件路径: " + mFileNamePath);
}
}
- 将添加文成后的文件,从源文件夹下移动入其他文件夹下:
-
// 当前用户桌面 File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory(); String desktopPath = desktopDir.getAbsolutePath(); System.out.println("桌面路径: " + desktopPath + "\n" + "创建的文件路径:" + desktopPath + "\\completed"); // 判断当前文件夹是否存,不存在就创建 File file = new File(desktopPath + "\\completed"); if (!file.exists()) { file.mkdir(); System.out.println("文件夹不存在,创建成功"); } else { System.out.println("文件夹已存在,不需要创建"); }
-
// 剪切文件 选择的文件路径 public static void ChooseFileCut(String inputPath, String outPath) { File inputFile = new File(inputPath); File outFile = new File(outPath); // 在程序结束时删除文件1 // inputFile.deleteOnExit(); try { // 在D盘创建文件2 outFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } cutFile(inputFile, outFile); }
-
// 剪切文件 将文件1剪切入文件2中并删除源文件 public static void cutFile(File inputFile, File outFile) { FileOutputStream fileOutputStream = null; InputStream inputStream = null; byte[] bytes = new byte[1024]; int temp = 0; try { inputStream = new FileInputStream(inputFile); fileOutputStream = new FileOutputStream(outFile); while ((temp = inputStream.read(bytes)) != -1) { fileOutputStream.write(bytes, 0, temp); fileOutputStream.flush(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (fileOutputStream != null) { try { fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("文件剪切成功。。。"); inputFile.delete(); }
逐行读取文件,返回集合列表:
/**
* 读取文件
*
* @param
*/
public List<String> readFile(String strFilePath) {
List<String> arrayList = new ArrayList<>();
File file = new File(strFilePath);
if (file.isDirectory()) {
Log.d(Tag, "The File doesn't not exist.");
} else {
try {
InputStream instream = new FileInputStream(file);
if (instream != null) {
//arrayList .add(line);
//Log.d(Tag,"逐行数据: "+line);
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
// 逐行读取
while ((line = buffreader.readLine()) != null) {
StringBuilder builder = new StringBuilder(line);
//每行,开头结尾添加字符串 " ""\n"
builder.insert(0, "\"");
builder.insert(builder.length(), "\"\"\\n\"");
arrayList.add(builder.toString());
}
mJoinData = "";
for (int i = 0; i < arrayList.size(); i++) {
mJoinData += arrayList.get(i) + "\n";
}
Log.d("逐行添加字符并拼接后的数据:" + "\n" + mJoinData);
instream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return arrayList;
}
添加字符后的文件:
所选择的文件路径: /storage/emulated/0/Video/lekt1key/lekt1t-private.pem
创建的桌面文件路径:C:\Users\test\Desktop\completed
"-----BEGIN CERTIFICATE-----""\n"
"MIIDXDCCAkSgAwIBAgIQexwtEyjkv45PwJxAb4TGYjANBgkqhkiG9w0BAQsFADAm""\n"
"MSQwIgYDVQQDDBtBenVyZSBJb1QgQ0EgTEVLVEVDIFJvb3QgQ0EwHhcNMTkwOTE4""\n"
"MDcyNjM0WhcNMjkwOTE1MDczNjM0WjATMREwDwYDVQQDDAhsZWt0ZWMxYTCCASIw""\n"
"DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9XuYHxbd6T7199BLqx5ZcONB1o""\n"
"-----END CERTIFICATE-----""\n"