read file directory

本文介绍了一个使用 ASP.NET WebForm 实现的目录浏览功能,通过几个按钮触发不同操作来展示文件和子目录,支持切换目录、返回上级等基本功能。
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;

namespace BusinessMonthPlan
{
	/// <summary>
	/// WebForm4 の概要の説明です。
	/// </summary>
	public class WebForm4 : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.ListBox FileList;
		protected System.Web.UI.WebControls.Button Button1;
		protected System.Web.UI.WebControls.Button Button2;
		protected System.Web.UI.WebControls.Button Button3;
		protected string CurrentPath;
		private void Page_Load(object sender, System.EventArgs e)
		{
			if(Page.IsPostBack==false)
 			{
  			CurrentPath= @"c:\UserDir"; //?置当前目?
				int aa=CurrentPath.IndexOf(".");
  			if(Directory.Exists(@"c:\UserDir")==false) //若?目?不存在,?建?目?
   			Directory.CreateDirectory(@"c:\UserDir");
   			LoadDir(CurrentPath); //初始化装入目?

 			}

		}
		private void LoadDir(string FullPath)
		{
 			CurrentPath=FullPath;
 			ArrayList values = new ArrayList();
 			string [] MyFiles,MyDirs;
 			MyFiles = Directory.GetFiles(FullPath); //得到?目?下所有文件
 			if(CurrentPath!=@"c:\UserDir") //若不是??目?,增加“返回上?目?”?? 

 			values.AddRange(MyFiles); //加入文件
 			MyDirs= Directory.GetDirectories(FullPath); //得到?目?下所有目?
 			values.AddRange(MyDirs); //加入目?
 			FileList.DataSource=values; //?置数据源
 			FileList.DataBind(); //?定数据
		}



		private void Button1_Click(object sender, System.EventArgs e)
		{
			//if(FileList.SelectedItem.Text=="返回上?目?") //返回上?目?
 			//{
  			//string ParentPath1=Directory.GetParent(CurrentPath).ToString();
				string ParentPath=this.FileList.SelectedItem.Text.ToString();
				Session["aa"]=ParentPath;
  			LoadDir(ParentPath);
  			return;
 			//}
 			//else //打?目?

		}

		private void Button2_Click(object sender, System.EventArgs e)
		{
			//string aa=1;
			//string ParentPath=this.FileList.SelectedItem.Text.ToString();
			string aa;
			aa=Directory.GetCurrentDirectory().ToString();

			string ParentPath1=Directory.GetParent(aa).ToString();
			
			
				
  			LoadDir(ParentPath1);
  			return;
		}

		private void Button3_Click(object sender, System.EventArgs e)
		{
		
			//string ParentPath=this.FileList.SelectedItem.Text.ToString();
			string aa;
			aa=@"C:\UserDir\aa\新しいフォルダ";

			string ParentPath1=Directory.GetParent(Session["aa"].ToString()).ToString();
			
			Session["aa"]=ParentPath1;

  			LoadDir(ParentPath1);
  			return;
		}

		private void FileList_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			string ParentPath=this.FileList.SelectedItem.Text.ToString();
			Session["aa"]=ParentPath;
  			LoadDir(ParentPath);
  			return;
		}
	}
}

 

### 错误分析与解决方法 #### 1. 文件路径问题 在读取文件时,`No such file or directory` 错误通常表示程序无法找到指定的文件。这可能由以下原因导致: - **路径格式错误**:在某些操作系统中(如 Linux 或 macOS),路径分隔符是正斜杠 `/`,而在 Windows 中使用的是反斜杠 `\`。如果路径中的反斜杠没有正确处理,可能会被解释为转义字符。 - **相对路径与绝对路径混淆**:程序可能在错误的目录下运行,或者未正确设置相对路径。 - **工作目录不匹配**:程序的工作目录可能与预期不符,导致相对路径解析失败。 #### 解决方案 ##### 使用原始字符串或正斜杠 在 Python 中,路径中的反斜杠 `\` 可能会被解释为转义字符。为了避免这种情况,可以在路径前添加 `r` 表示原始字符串,或者将路径中的反斜杠替换为正斜杠 `/`: ```python # 原始字符串方式 path = r'E:\DLCode_cjh\U-net_train\data\VOCtrainval_06-Nov-2007\VOCdevkit\VOC2007' # 正斜杠方式 path = 'E:/DLCode_cjh/U-net_train/data/VOCtrainval_06-Nov-2007/VOCdevkit/VOC2007' ``` [^1] ##### 确认工作目录 确保程序的工作目录与文件所在的目录一致。可以通过打印当前工作目录来确认: ```python import os print(os.getcwd()) ``` 如果工作目录不是项目根目录,可以手动设置工作目录为项目根目录,或者使用绝对路径[^3]。 ##### 检查文件是否存在 在尝试读取文件之前,可以先检查文件是否存在: ```python import os if os.path.exists(file_path): with open(file_path, 'r') as file: data = file.read() else: print("文件不存在,请检查路径是否正确。") ``` ##### 使用 `os.path.join` 构建路径 为了确保路径的跨平台兼容性,建议使用 `os.path.join` 来构建文件路径: ```python import os file_path = os.path.join(self._current_work_path, cwd_path + 'access_log-' + self._prefixes_time + '.csv') ``` [^4] #### 2. 工作环境配置问题 在某些开发环境中(如 CLion),工作目录可能未正确设置,导致程序无法找到文件。可以通过以下步骤解决: - **输出当前工作目录**:在代码中输出当前工作目录,确认程序实际运行的目录。 - **设置工作目录**:在开发工具中(如 CLion)设置工作目录为项目根目录,以确保相对路径能够正确解析[^3]。 #### 3. 其他可能的原因 如果错误出现在其他上下文中(例如网络编程或数据库连接),可能是由于缺少必要的库或模块。例如,在 Qt 项目中,如果遇到 `QTcpSocket: No such file or directory` 错误,需要检查 `.pro` 文件是否包含了相应的模块: ```qmake QT += network ``` [^2] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值