readFileSystem/CLAUDE.md

84 lines
3.3 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is a **File System Browser** - a Python desktop application built with PySide6 that displays files and folders from a specified directory in a table format. The default target directory is `C://OEM` (Windows).
## Architecture
The application follows a simple two-layer architecture:
### Layer 1: File System Reading (`src/file_system.py`)
- **FileSystemReader**: Core utility class that handles OS-level file operations
- Reads directory contents using `pathlib.Path`
- Handles permission errors gracefully (skips inaccessible files)
- Returns sorted list of `FileInfo` objects (folders first, then alphabetically)
- Extracts file metadata: name, size, type, modification timestamp
- **FileInfo**: Data class that represents a single file/folder entry
- Includes `size_readable` property for human-readable file sizes (B, KB, MB, GB)
- Distinguishes between folders and files via `is_dir` flag
### Layer 2: PySide6 GUI (`src/main.py`)
- **FileSystemBrowser**: Main window that integrates file reading with UI display
- Initializes UI layout with path label, refresh button, table widget, and status bar
- Calls `FileSystemReader.get_files_and_folders()` to populate the table
- Renders file metadata in 4-column table: Name, Type, Size, Modified
- Visual feedback: folders displayed in blue, alternating row colors
- Status bar updates with total item count and current path
- `load_files()` method handles UI updates with exception handling
### Entry Point (`run.py`)
- Imports and runs the `main()` function from `src/main.py`
- Creates a `FileSystemBrowser` instance with default path `C://OEM`
## Common Commands
### Running the Application
```bash
python run.py
```
### Installing Dependencies
```bash
pip install -r requirements.txt
```
### Development Setup
```bash
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python run.py
```
## Key Design Decisions
1. **Path Handling**: Uses `pathlib.Path` for cross-platform compatibility (Windows, macOS, Linux)
2. **Error Handling**: Files/folders that cannot be read due to permissions are silently skipped rather than throwing exceptions
3. **Sorting**: Folders are displayed first, followed by files, all sorted alphabetically (case-insensitive)
4. **File Type Detection**: Uses file extension (suffix) or labels as "File" if no extension; folders labeled as "Folder"
5. **Size Display**: Folders show "—" for size since folder size isn't meaningful; files show converted size with unit
6. **UI Responsiveness**: `QApplication.processEvents()` called during `load_files()` to prevent UI freezing
## Modifying the Target Directory
To browse a different directory, change the `target_path` parameter in [run.py](run.py):
```python
window = FileSystemBrowser(target_path="Your/Custom/Path")
```
Or modify the default in [src/main.py:14](src/main.py#L14).
## Dependencies
- **PySide6 6.7.1**: Official Python bindings for Qt framework (GUI framework)
## Notes for Future Development
- The application currently only reads one directory level (non-recursive)
- File I/O is synchronous; large directories may cause brief UI pause during initial load
- No persistent state is saved between sessions