SetIn Method

Console.SetIn Method (TextReader)


Sets the In property to the specified TextReader object.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, UI = true)]
public static void SetIn(
	TextReader newIn


Type: System.IO.TextReader

A stream that is the new standard input.

Exception Condition

newIn is null.


The caller does not have the required permission.

By default, the In property is set to the standard input stream.

A StreamReader that encapsulates a FileStream can be used to receive input from a file.

The following example illustrates the use of the SetIn method. It replaces four consecutive space characters in a string with a tab character. To run it, you must supply two command line arguments. The first is the name of an existing text file to redirect the standard input stream to. The second is the name of a file to redirect the standard output stream to. This file need not exist. If it does, its contents will be overwritten.

using System;
using System.IO;

public class InsertTabs {
    private const int tabSize = 4;
    private const string usageText = "Usage: INSERTTABS inputfile.txt outputfile.txt";
    public static int Main(string[] args) {
        StreamWriter writer = null;

        if (args.Length < 2) {
            return 1;

        try {
            // Attempt to open output file.
            writer = new StreamWriter(args[1]);
            // Redirect standard output from the console to the output file.
            // Redirect standard input from the console to the input file.
            Console.SetIn(new StreamReader(args[0]));
        catch(IOException e) {
            TextWriter errorWriter = Console.Error;
            return 1;            
        string line;
        while ((line = Console.ReadLine()) != null) {
            string newLine = line.Replace(("").PadRight(tabSize, ' '), "\t");
        // Recover the standard output stream so that a 
        // completion message can be displayed.
        StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput());
        standardOutput.AutoFlush = true;
        Console.WriteLine("INSERTTABS has completed the processing of {0}.", args[0]);
        return 0;

for calling unmanaged code. Associated enumeration: SecurityPermissionFlag.UnmanagedCode

.NET Framework
Available since 1.1
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Return to top
© 2015 Microsoft